たとえば、以下のコードのように、何らかの用途のためにスレッドを再起動したいと考えています。
class Ex13 implements Runnable {
int i = 0;
public void run() {
System.out.println("Running " + ++i);
}
public static void main(String[] args) throws Exception {
Thread th1 = new Thread(new Ex13(), "th1");
th1.start();
//th1.join()
Thread th2 = new Thread(th1);
th2.start();
}
}
上記のプログラムを実行しているときに、Running 1 Running 2 という出力が得られたり、Running 1 しか得られないことがあります。数回実行した後、出力として Running 1 しか得られません。私はこの行動に完全に驚いています。誰でもこれを理解するのを手伝ってくれますか? join() を置くと、実行中の 1 しか得られません。