在同步块内执行新线程

2022-09-04 02:13:06

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

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

答案 1

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


答案 2

没有线程具有单独的生命。在上述情况下,同步块将仅在线程的起点之前被阻止。


推荐