2013-04-10 10 views
5

同期ブロック内に新しいスレッドを作成すると、スレッド実行も完了するまでブロックがロックされたままになりますか? そうでない場合、ロックされたままになるまでは?同期ブロック内の新しいスレッドの実行

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

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

+0

@rajesh no。あなたが参照する質問は、この質問の範囲をカバーしますが、別の質問です。 – giulio

答えて

7

コードjoin()dが新しく作成されたスレッドと一致していて、それが終了するのを待っている間だけロックされたままになります。 join()が存在しないので、start()への呼び出しが完了した後にロックが解除されます。

+0

上記の場合、ブロックは新しいスレッドが作成されるまでロックされますか? run()が完了するまで待ちませんか? – Sunny

+0

@サニー、はい、それは正しいです。 – hmjd

0

スレッドの寿命はありません。上記の場合、スレッドの開始点までのみブロックされます。

関連する問題