Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逐个通知多个服务员_Java_Multithreading_Notifications - Fatal编程技术网

Java 逐个通知多个服务员

Java 逐个通知多个服务员,java,multithreading,notifications,Java,Multithreading,Notifications,我开始处理线程的notify()和wait(),我知道这可以通过将所有侍者添加到一个队列中来轻松完成,但我仍然想知道是否有任何方法可以在没有队列的情况下完成,让多个侍者每次一个接一个地通知(无需任何命令)。替代方法是: 使用obj.notifyAll()通知同时等待对象的所有线程 使用obj.Notify()通知一个等待的线程 无法通知特定线程 我想您可以使用队列的长度作为调用obj.notify()的次数的提示,但我的建议是“不要”。这种方法有各种潜在的危险 您还没有告诉我们您试图在这里

我开始处理线程的notify()和wait(),我知道这可以通过将所有侍者添加到一个队列中来轻松完成,但我仍然想知道是否有任何方法可以在没有队列的情况下完成,让多个侍者每次一个接一个地通知(无需任何命令)。

替代方法是:

  • 使用
    obj.notifyAll()
    通知同时等待对象的所有线程

  • 使用
    obj.Notify()
    通知一个等待的线程

无法通知特定线程

我想您可以使用
队列的长度作为调用
obj.notify()
的次数的提示,但我的建议是“不要”。这种方法有各种潜在的危险



您还没有告诉我们您试图在这里解决什么并发问题,但我建议您寻找一种替代方法;e、 g.使用标准并发包提供的另一种(更高级别)同步机制。

“要有多个等待者,并且每次都逐个通知”。。。这正是
wait()
notify()
所做的。如果3个线程在同一对象上调用
wait()
,然后在该对象上调用了
notify()
,则其中一个线程(随机选择)被唤醒@ParkerHalo,你应该说“未指定”而不是“随机”。
o.notify()
的Javadoc表示,“选择是任意的,由实现自行决定。”“随机”表示Javadoc不需要的特定行为。