category: Java
DATE : 2006/06/06 (Tue)
DATE : 2006/06/06 (Tue)
スレッド t を実行しようとして、よく私がやらかすミスをここにメモしておきます。
t.run();
上のコードは間違いです。正しくは、以下の通りです。
t.start();
Thread#run()には、新しいスレッドで実行する処理が書かれています。そのため、一応 Thread#run() を実行すれば、新しいスレッドで実行しようとしていた処理そのものは実行されます。
しかし、 Thread#run() を直接呼び出した場合は、新しいスレッドではなく、そのメソッドを呼び出したスレッドで処理が行われてしまいます。
新しいスレッドを起動するには、 Thread#start() を実行しなければなりません。
ちなみに、 FindBugs でコードをチェックすると、このミスをしっかり検出してくれます。
PR
●この記事にコメントする
忍者ブログ [PR]