1.如果线程调用了对象的wait方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁;
2.当有线程调用了notifyAll方法(唤醒所有wait线程)或notify方法(只随机唤醒一个wait线程),被唤醒的线程便会进入该对象的锁池中,所持中的线程回去竞争该对象锁,也就是说,调用了notify后只要一个线程会由等待池进入锁池,而notifyAll会将该对象等待池内的所有线程移动到锁池中,等待锁竞争;
3.所谓唤醒线程,就是将线程由等待池移动锁池,notifyAll调用后,会将全部线程由等待池移动到锁池,然后参与锁池竞争,竞争成功则继续执行,如果不成功则留在锁池等待锁被释放后再次参与竞争。notify只会唤醒一个线程。
notify和notifyAll区别
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 想知道notify和notifyall的区别必须先了解两个概念 锁池EntryList 等待池WaitSet 锁池...
- 前言 今天简单的讲一讲线程中sleep(),join(),yield(),wait(),notify(),noti...
- 在了解这两个方法之前,先了解两个概念锁池(EntryList)和等待池(WaitSet) 锁池 假设线程A已经拥有...
- 根据以上关于锁池和等待池的概念描述我们可以知道 1.如果有多个线程想要某个已经被占用的锁的时候,因为想要获取锁,就...
- [toc] 还记得前面用ArrayList实现阻塞队列的文章:《什么?面试官让我用ArrayList实现一个阻塞队...