Java 逐个通知多个服务员
我开始处理线程的notify()和wait(),我知道这可以通过将所有侍者添加到一个队列中来轻松完成,但我仍然想知道是否有任何方法可以在没有队列的情况下完成,让多个侍者每次一个接一个地通知(无需任何命令)。替代方法是:Java 逐个通知多个服务员,java,multithreading,notifications,Java,Multithreading,Notifications,我开始处理线程的notify()和wait(),我知道这可以通过将所有侍者添加到一个队列中来轻松完成,但我仍然想知道是否有任何方法可以在没有队列的情况下完成,让多个侍者每次一个接一个地通知(无需任何命令)。替代方法是: 使用obj.notifyAll()通知同时等待对象的所有线程 使用obj.Notify()通知一个等待的线程 无法通知特定线程 我想您可以使用队列的长度作为调用obj.notify()的次数的提示,但我的建议是“不要”。这种方法有各种潜在的危险 您还没有告诉我们您试图在这里
- 使用
通知同时等待对象的所有线程obj.notifyAll()
- 使用
通知一个等待的线程obj.Notify()
队列的长度作为调用obj.notify()
的次数的提示,但我的建议是“不要”。这种方法有各种潜在的危险
您还没有告诉我们您试图在这里解决什么并发问题,但我建议您寻找一种替代方法;e、 g.使用标准并发包提供的另一种(更高级别)同步机制。“要有多个等待者,并且每次都逐个通知”。。。这正是wait()
和notify()
所做的。如果3个线程在同一对象上调用wait()
,然后在该对象上调用了notify()
,则其中一个线程(随机选择)被唤醒@ParkerHalo,你应该说“未指定”而不是“随机”。o.notify()
的Javadoc表示,“选择是任意的,由实现自行决定。”“随机”表示Javadoc不需要的特定行为。