在同步块内执行新线程

时间:2013-04-10 12:52:46

标签: java synchronized

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

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

2 个答案:

答案 0 :(得分:12)

如果代码join()与新创建的线程一起,它只会保持锁定,从而等待它完成。由于没有join()锁定将在start()的调用完成后释放。

答案 1 :(得分:1)

没有线程有单独的生命。在上述情况下,synchronized块将被阻止,直到线程的起始点。