14

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

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

2 回答 2

17

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

于 2013-04-10T12:54:40.850 回答
1

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

于 2013-04-10T12:54:26.847 回答