【问题标题】:Execution of new thread inside a synchronized block在同步块内执行新线程
【发布时间】:2013-04-02 07:50:48
【问题描述】:

如果我在同步块中创建一个新线程,该块是否会保持锁定直到线程执行也完成? 如果没有,那么它会一直锁定到什么时候?

String sLine;
onClick(String line){
    synchronized (lock) {
        sLine = line;
        new Thread(new Runnable() {
            @Override
            public void run() {
                 doProcessing(Sline);    
        }).start(); 
    }
}

【问题讨论】:

标签: java synchronized


【解决方案1】:

只有当代码join()d 与新创建的线程一起时,它才会保持锁定状态,从而等待它完成。由于没有join(),所以在调用start() 完成后会释放锁。

【讨论】:

  • 所以在上述情况下,它只会在新线程创建之前被锁定?所以它不会等到 run() 完成?
【解决方案2】:

没有线程有单独的生命。在上述情况下,同步块只会被阻塞到线程的起点。

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多