线程协调方法
多线程执行时,某些部分需要在其他部分之前完成,这时需要用到线程协调方法。
(1)join()方法,当一个线程调用另一个线程的join()方法时,将当前线程挂起,等调用线程执行完之后再接着执行。
下来是两组方法
(2)wait(),notify(),notifyAll()
这三个方法来自Object类
wait方法,等待时时被挂起,其他线程使得条件满足时,再被其他线程通过notify或者notifyall方法唤醒。
挂起期间会释放锁,因为不释放锁,其他线程就无法进去同步方法中或同步控制块中,就无法执行notify或者notifyall方法唤醒该线程,造成死锁。
(3)await(), signal(), signalAll()
这三个方法来自并发包JUC中提供的Condition类,两组方法工作原理基本一致。
但是await()可以指定等待的条件,使用起来更加灵活。
(1)join()方法,当一个线程调用另一个线程的join()方法时,将当前线程挂起,等调用线程执行完之后再接着执行。
下来是两组方法
(2)wait(),notify(),notifyAll()
这三个方法来自Object类
wait方法,等待时时被挂起,其他线程使得条件满足时,再被其他线程通过notify或者notifyall方法唤醒。
挂起期间会释放锁,因为不释放锁,其他线程就无法进去同步方法中或同步控制块中,就无法执行notify或者notifyall方法唤醒该线程,造成死锁。
(3)await(), signal(), signalAll()
这三个方法来自并发包JUC中提供的Condition类,两组方法工作原理基本一致。
但是await()可以指定等待的条件,使用起来更加灵活。