繁体   English   中英

从Java中同一类的另一个同步方法内部创建的新线程中调用同步方法

[英]Calling a synchronized method from a new thread created inside another synchronized method of the same class in Java

假设一个类具有如下两种方法:

public synchronized void methodA() {
  // do some stuff

  new Thread() {
    public void run() {
      methodB();
    }
  }.start();
}

public synchronized void methodB() {
  // do some stuff
}   

我们呼吁methodA()将新的线程通过调用一个被封锁methodA()

可能不是: new Thread().start()立即返回,因此在实际启动新线程并methodB() ,很可能原始线程已经退出methodA()

但是,如果您这样做:

public synchronized void methodA() throws InterruptedException {
  new Thread() {
    public void run() {
      methodB();
    }
  }.start();
  Thread.sleep(10000);
}

您的methodB将阻塞大约10秒钟,等待原始线程释放锁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM