質問: new ThreadTest("あいう\r\n", 2000, 3); //aのスレッドを実行 a.start(); try{ //スレッドを500ミリ秒停止 sleep(500); } catch (Exception e){ } //bのスレッドを実行 b.start(); } } ``` 結果としては以下のようになります。(カッコの秒数は停止時間) ABC(0.5秒停止)あいう(2秒停止) ABC(0.5秒停止)あいう(2秒停止) ABC(0.5秒停止)あいう(2秒停止) ABC 流れとしては下記の順になるのではと考えましたが、どこか間違えているような気がするので間違いや補足があればご指摘頂けますでしょうか。 1.スレッドaが開始 2.スレッドa500ミリ秒(0.5秒)一時停止 3.スレッドbが開始 4.スレッドaとスレッドbが2000ミリ秒(2秒)停止
回答: aのあとにbが500ミリ秒遅れてスタートするだけで、2つとも同時に動き2000ミリ秒ごとにprintlnを実行しています。 1.スレッドaが開始 2.メインスレッドが500ミリ秒(0.5秒)一時停止 3.スレッドbが開始(スレッドaに対して500ミリ秒遅れ) 4.スレッドaもスレッドbも指定回数に到達するまで、2000ミリ秒(2秒)停止を繰り返す