【问题标题】:Ways to acquire the intrinsic lock for the thread calling the wait method为调用wait方法的线程获取内在锁的方法
【发布时间】:2017-06-30 15:36:19
【问题描述】:

从逻辑上讲,调用wait方法的线程应该已经获得了正在调用wait的对象的内在锁。

oracle 教程here 中指出,“在对象的同步方法中调用wait 是获取内在锁的简单方法”,这意味着可能至少还有另一种获取方法锁。

我的问题是,为了调用wait,除了在同步方法中调用wait之外,还有其他方法来获取内在锁吗? ...它们是什么?

【问题讨论】:

    标签: java multithreading locking wait


    【解决方案1】:

    脑海中浮现的一些(密切相关的)其他人:

    • synchronized 块中:

      synchronized (this) {
        wait();
      }
      
    • 在非同步方法中,从同步方法内部调用:

      synchronized void a() {
        b();
      }
      
      void b() {
        wait();
      }
      
    • 在非同步方法中,从同步块内部调用:

      synchronized (this) {
        b();
      }
      
      void b() {
        wait();
      }
      

    【讨论】:

    • 谢谢。我渴望一票赞成! ...你会慷慨地给我一个吗?
    • 我喜欢你的回答。它证实了简单的想法可能是答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多