【问题标题】:How java thread will going to work in below scenario?java线程将如何在以下场景中工作?
【发布时间】:2020-05-17 21:49:29
【问题描述】:

假设在多线程环境中有 5 个线程 t1,t2,t3,t4,t5.... 线程 t1,t2,t3,t4 调用 wait() 方法(在同步块内)并且只有线程 t5 调用notify() 方法然后哪个线程将获得优先权再次获得临界区的锁。

【问题讨论】:

  • 你读过Javadoc for o.notify()吗?我认为第三句话回答了你的问题。
  • o.notify() 被调用时,一个等待该对象监视器(如果有的话)的线程将被唤醒。请注意,您仍然可能有一些竞争条件;例如。在任何线程调用 wait() 之前调用对象上的 notify() ..
  • 欢迎来到 StackOverflow。为什么不尝试编写和运行代码? :)

标签: java multithreading wait notify thread-synchronization


【解决方案1】:

选择是任意的,可以唤醒 4 个线程中的任何一个。 java中的内在锁是不公平的,这将导致一些等待的线程比其他线程等待更长的时间,即使它们首先尝试获得锁。如果这对您的程序很重要,ReentrantLock 可用于授予对最长等待线程的访问权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多