2013-04-10 11 views
5

Se creo un nuovo thread all'interno di un blocco sincronizzato, il blocco rimarrà bloccato fino al completamento dell'esecuzione del thread? Se no, allora fino a quando rimarrà bloccato?Esecuzione di un nuovo thread all'interno di un blocco sincronizzato

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

duplicato - http://stackoverflow.com/questions/5295065/java-threads-and-synchronized-blocks?rq=1 – rajesh

+0

@rajesh no. La domanda a cui fai riferimento copre lo scopo di questa domanda, ma è una domanda diversa. – giulio

risposta

7

Rimarrebbe bloccato solo se il codice join() d con il thread appena creato, quindi in attesa che termini. Poiché non è disponibile il join(), il blocco verrà rilasciato dopo il completamento della chiamata a start().

+0

quindi nel caso precedente il blocco verrebbe bloccato solo fino alla creazione del nuovo thread? quindi non aspetterà che run() sia completato? – Sunny

+0

@Sunny, sì, è corretto. – hmjd

0

nessun thread ha una durata separata. il blocco sincronizzato verrà bloccato solo fino al punto iniziale del thread nel caso precedente.