スレッドが完了した後にThreadオブジェクトの状態を理解しようとしています。スレッドがrun()メソッドを完了すると、スレッドオブジェクトは依然として有効なオブジェクトであり、それでもインスタンスオブジェクトとして使用でき、それでもメソッドを呼び出せるという本を読みました。私は以下の例でこれを試してみることにしました:join()を使って他の3つのスレッドが完了するのを待ちます。次に、cのrun()メソッドを呼び出しますが、何らかの理由でrun()メソッドから何も出力されません。上記のプログラムを実行した後の出力の最後の数行がここにあります。スレッドが完了した後でスレッドのrun()メソッドを実行する
y is 287
y is 287
y is 288
y is 289
Thread-1
Thread-0
y is 289
y is 289
y is 290
y is 291
Thread-1
Thread-0
y is 291
y is 291
y is 292
y is 293
Thread-1
Thread-0
y is 293
y is 293
y is 294
y is 295
Thread-0
y is 295
y is 296
Thread-0
y is 296
y is 297
Thread-0
y is 297
y is 298
Thread-0
y is 298
y is 299
Thread-0
y is 299
y is 300
Running C's Run
スレッドが完了しても、私はc.run()呼び出しのためにyの値が400になると予想していました。
アイデア?
ありがとうございます。
d.run()を呼びたくないのですか?また、3つのスレッドが同じ変数をインクリメントしてロックがない場合、何も壊れていないことに驚いています。 – Thomas
はいスレッドオブジェクトが完了したらそれを実行したかったのです。 – ziggy