wait/notify 设置时间等待会怎么样?

2019-03-08  本文已影响0人  RWSC

我们知道wait/notify/notifyAll 在执行前都需要获取对象锁。

一般程序:

synchronized obj {

    // 条件不满足

    obj.wait()

    // 业务逻辑

}

线程A执行上面执行上面逻辑后,会一直阻塞。直到其他线程B调用ThreadA.interrupt() 或者 执行下面程序。线程A才会被唤醒,唤醒会进行抢锁(这里JVM可进行优化,判断有对象已经被抢锁后,可能直接将线程放入对象的等待队列,需要确认?),抢锁成功后,继续执行业务逻辑。

synchronized obj {

    obj.notify/notifyAll

}

obj.wait(timeout)的区别时,时间到达后,提前进入强锁阶段。

上一篇下一篇

猜你喜欢

热点阅读