gpt4 book ai didi

java - 如果不在同步块(synchronized block)中使用等待和通知方法会发生什么?有什么用吗?

转载 作者:行者123 更新时间:2023-12-02 04:34:02 25 4
gpt4 key购买 nike

关于同步的两个问题

  1. 如果在非同步块(synchronized block)中使用 wait 和 notification 方法会发生什么?有用吗?
  2. synchronized 对象应该与 wait 方法的对象相同吗?我可以这样做吗:

    synchronized (o) {
    try {
    this.wait();
    } catch (InterruptedException e) {

    }
    }

最佳答案

  1. 如果当前线程在调用对象的 wait() 之前未能在对象上同步,则会抛出 IllegalThreadStateException >notify() 方法。所以,不,它没有用。

  2. 是的,重申一下上述内容,线程必须在调用 wait()notify() 的同一个实例上进行同步/。因此,该示例仅在 o == this 时才有效。

自从引入 java.util.concurrent 以来,我没有找到使用 wait()notify() 的充分理由,并且synchronized 现在也不太有用了。我向初学者(更容易使用)和高级(更强大和正确)程序员推荐该包中的高级工具。

关于java - 如果不在同步块(synchronized block)中使用等待和通知方法会发生什么?有什么用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com