# setPriority 方法

我们编写了一个 Join 类，还是用来输出数字0-9。

```javascript
public class Priority implements  Runnable{

    //线程的启动需要重写 run 方法
    @Override
    public void run(){
         
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName()+"线程正在执行"+"第"+i+"次for循环");
        }
    }
}
```

我们编写了一个测试类 PriorityThreadDemo, 设置 线程 t1 优先级为1，也可以用 常量 Thread.MIN\_PRIORITY 来表示，设置 线程 t2 优先级为10，也可以用 常量 Thread.MAX\_PRIORITY 来表示。

```java
public class PriorityThreadDemo {

    public static void main(String[] args) {
        int mainPriority = Thread.currentThread().getPriority();
        System.out.println("主线程的优先级为:"+mainPriority);

        Priority  pt =new Priority ();

        Thread t1= new Thread(pt,"thread 1");
        t1.setPriority(1);
        t1.setPriority(Thread.MIN_PRIORITY);//和上一句等价

        Thread t2= new Thread(pt,"thread 2");
        t2.setPriority(Thread.MAX_PRIORITY );//和上一句等价

        t1.start();
        t2.start();

        //优先级设置后,运行的顺序并不绝对,依然由操作系统决定

    }
}
```

![](https://3876120153-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MeAUhQfs4IbJtX3pwu_%2F-MeVZKSRkSwXbtGejeD-%2F-MeVYjKZNqrJ6gITP-AZ%2Fprioritythreaddemo.png?alt=media\&token=c5a3452d-346c-4254-ab5d-6423cecacd0d)

可以看出，虽然我们设置了 t2 的优先级为最高10， t1 的优先级 为最低1，但是实际执行过程中并不能保证 t2 线程一定优先于 t1 线程的，只能说 t2 执行比较有可能 抢占 t1 的机会。
