并发编程(6)线程的通信

wait()和notify()

等待/通知机制,是指一个线程A调用了对象O的wait()方法进入等待状态,而另一个线程B调用了对象O的notify()或者notifyAll()方法,线程A收到通知后从对象O的wait()方法返回,进而执行后续操作。

wait与notify实现的一个底层原理,synchronized的原理,主要是monitor。

必须得对同一个对象实例进行加锁、wait、notify,这样的话,他们其实操作的才是通一个对象实例里的monitor相关的计数器、wait set。

join()和yield()

main线程里面开启了一个线程,main线程如果对那个线程调用了join的方法,那么就会导致main线程会阻塞住,main线程会等待其他线程的代码逻辑执行结束,那个线程执行完毕,然后main线程才会继续往下走。

如果某个线程一直长时间霸占着CPU,导致其他的线程很少得到机会来执行,对线程调用yield方法,调用之后,就会尝试让出CPU给其他线程执行。(让出去之后自己也可以继续和其他线程竞争抢CPU)

猜你喜欢

转载自blog.csdn.net/qq40988670/article/details/86613094