多线程可以提高工作效率,则免不了线程之间互相通信。
wait跟notify是老的方法,每个对象会有一个监视器,有一个就绪队列,一个阻塞队列。
t1、t2、t3表示三个线程,当三个线程启动了,在线程run方法中,调用了wait,就会把运行的线程放到阻塞队列,
| t1 | t2 | t3 |
| t2 | t3 |
那么问题来了,我不想唤醒t1,我想唤醒t3,可以吗?如果用wait\notify,很明显是做不到的。
这时候引入了condition对象,就是为了解决此问题。condition对象会跟线程绑定。当线程t1执行run方法时,调用了 condition_1.await,则t1跟
condition_1就存在了绑定关系。
| t1(conditioin_1) | t2(conditioin_2) | t3(conditioin_3) |
就绪队列。
本文探讨了多线程环境中线程之间的通信机制,重点介绍了传统wait-notify方法的局限性及Condition对象如何解决特定线程唤醒的问题。通过具体的线程绑定示例,解释了Condition如何实现精确的线程唤醒。
351

被折叠的 条评论
为什么被折叠?



