如果我在同步块中创建一个新线程,该块是否会保持锁定状态,直到线程执行完成为止? 如果不是,那么它什么时候会被锁定?
String sLine;
onClick(String line){
synchronized (lock) {
sLine = line;
new Thread(new Runnable() {
@Override
public void run() {
doProcessing(Sline);
}).start();
}
}
答案 0 :(得分:12)
如果代码join()
与新创建的线程一起,它只会保持锁定,从而等待它完成。由于没有join()
锁定将在start()
的调用完成后释放。
答案 1 :(得分:1)
没有线程有单独的生命。在上述情况下,synchronized块将被阻止,直到线程的起始点。