notify()和notifyAll()有什么区别?
等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁后,进入到了该对象的等待池,等待池中的线程不会去竞争该对象的锁。锁池:只有获取了对象的锁,线程才能执行对象的 synchronized 代码,对象的锁每次只有一个线程可以获得,其他线程只能在锁池中等待。notifyAll() 唤醒对象的等待池中的所有线程,进入锁池。结果:仅调用一次 obj.notify(),线程 t1 或 t2 中的一个始终在等待被唤醒,程序不终止。把 t3 注掉,启动 t4 线程。
原创
2023-05-11 17:48:10 ·
74 阅读 ·
0 评论