线程——Wait 、notify、notifyAll

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nliki/article/details/80240636

Object.wait是指线程等待当前对象上,如果一个线程调用了wait方法,它不会往下走,它将会等待。在使用wait需要注意的地方是必须获得Object对象监视器(monitor),要保证wait 方法在synchronized里面。Wait方法会导致当前这个线程释放监视器,为什么要释放呢?如果不释放,其他线程就无法获取这个Object所有权。


Object.notify通知等待这个对象上的线程,同样notify方法要保证在synchronized里面,也必须获得Object对象上的监视器(monitor)

接下来写了一个类,第一次运行我发现如下结果,然后我有运行了第二次,出现了另一种结果。

导致第一种的结果,很显然是t2先执行了,然后才执行t1,而t1一直处于等待状态。

而第二种结果,t1先于t2。所以我们在使用wait和notify的时候要注意下,以防notify在wait后执行。



Notify 和notifyAll的区别:



猜你喜欢

转载自blog.csdn.net/Nliki/article/details/80240636