Java多线程知识点总结——进阶篇(十二) 之 Join方法 & 优先级 & yield方法

时间:2022-07-14 23:30:15

join方法

方法说明:等待该线程终止。
通俗来说就是 当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。

样例代码如下:

class Demo implements Runnable {
    public synchronized void run() {
        for (int x = 0; x < 70; x++) {
            try {Thread.sleep(1);} catch (InterruptedException e) {}
            System.out.println(Thread.currentThread().toString() + "....." + x);
        }
    }
}

class JoinDemo {
    public static void main(String[] args) throws Exception {
        Demo d = new Demo();
        Thread t1 = new Thread(d);
        Thread t2 = new Thread(d);
        t1.start();
        t2.start();

        t1.join();// 让出执行权,先让t1执行完。。

        System.out.println("over");
    }
}

运行结果为:

Thread[Thread-0,5,main].....0
Thread[Thread-0,5,main].....1
。。。。
Thread[Thread-0,5,main].....69
over
Thread[Thread-1,5,main].....0
Thread[Thread-1,5,main].....1
。。。。
Thread[Thread-1,5,main].....68
Thread[Thread-1,5,main].....69

优先级

优先级其实可以认为就是线程的权重,权重高的,CPU分配的资源就相对多些!
我们开辟的线程默认的优先级是 5 ,上面例子的输出结果也有显示。
设置优先级的API为:

new Thread().setPriority(int newPriority)

yield方法

方法说明:暂停当前正在执行的线程对象,并执行其他线程。
如果在一个多线程运行的代码中,如果不添加减缓线程运行的方法时,那么有可能某个线程会输出一大片内容后其他线程再执行
如果添加了yield方法,那么就可以减缓一下当前线程的执行速度,就可以达到其他线程都被平均执行的可能!