当前位置: 首页 > 知识库问答 >
问题:

两个等待线程的通知方法

董鸣
2023-03-14

我对通知方法的一点感到困惑。“notify() :它唤醒一个在同一对象上调用 wait() 的线程。因此,假设两个线程称为等待同一对象。那么当我调用通知时,将通知哪个线程?

共有1个答案

鲁波光
2023-03-14

您无法知道哪一个会收到通知。规格 说:

公共最终无效通知()

唤醒正在这个对象的监视器上等待的单个线程。如果有任何线程正在等待这个对象,它们中的一个将被唤醒。这种选择是任意的,由实现来决定。

 类似资料:
  • 我想做一个小练习来习惯等待/通知。我想做的是简单地启动一个线程,然后用等待让它进入睡眠状态,用通知唤醒它,多次。 我的代码是: 我希望这会是这样 相反,这样做: 所以。。。通知似乎没有唤醒打印机线程? 这不应该是一个死锁,因为通过等待,我释放了所有的锁,所以主服务器不应该有任何对打印机的锁,打印机应该能够唤醒并打印。 我做错了什么?

  • 我有一段代码 如您所见,我首先将标志设置为false,这样其中一个线程就可以进入Sum2Elements方法并将其更改为true,从而让所有人都等待。 我知道在同步代码中,只有一个线程可以完成它的任务,这里我有两个同步方法,这是否意味着两个线程在每次通知之后都在尝试执行这个方法? 如果是这样,那么一个线程是否不可能输入Sum2Elements,在另一个线程进入InsertElement之前将标志更

  • 问题内容: 我写了一个永远不会停止的测试应用程序。它发出(是一个对象),但是我从不打电话通知。为什么此代码结束?尽管主线程在上同步,但生成的线程仍在运行,因此不会锁定该对象。 结果是主线程等待5秒钟,在此期间工作人员提供其输出。然后,在5秒钟后,程序退出。不等。如果主线程在5秒钟内没有进入睡眠状态(对此行进行了注释),则实际上将等到工作人员完成操作。当然,这里是一种使用方法,但是,出乎意料的是,它

  • 我是多线程的新手,当我阅读有关多线程的内容时,我想编写这个精美的多线程代码来执行以下操作。 我的柜台类如下。 这个计数器对象由两个线程共享。一旦线程启动,我需要做以下事情。我希望Thread2一直等到Thread1将Counter对象的计数加1。完成后,线程1通知线程2,然后线程1开始等待线程2将值递减1。然后,线程2启动并将值递减1,并再次通知线程1,然后线程2开始等待线程1。重复这个过程几次。

  • 我只想使用notify方法恢复所有进入等待状态的线程。我不想使用notifyAll()恢复所有处于等待状态的线程。 调用 wait() 将释放内部锁,以便队列中的其他线程可以获取它。我希望最后一个线程直接调用 notify(),这将通知任何处于等待状态的线程再次恢复。等待线程唤醒并调用 notify(),这将再次恢复处于等待状态的线程。

  • 我如何启动两个线程,其中thread1首先执行,thread2在thread1结束时启动,而主方法线程可以在不锁定其他两个线程的情况下继续工作? 我尝试了join(),但是它需要从线程调用,线程必须等待另一个线程,没有办法执行类似thread2.join(thread1)的操作;因此,如果我在main()中调用join,我将有效地停止主线程的执行,而不仅仅是Thread2的执行。 #编辑:为什么我