出力が複数のスレッドによって処理される関数があります (関数呼び出しが発生した後に作成されます)。しかし、プログラムを実行すると、関数の実行が完了する前に、スレッドから NullPointerException を受け取ります。Java がスレッドを早期に開始しないように指定するにはどうすればよいですか?
public class MainThread extends Thread {
public MainClass() {
...
myRunnable1 = new myRunnable(args[]);
myRunnable2 = new myRunnable(args[]);
...
}
public void run() {
for (someNumberOfRuns) {
function1();
System.out.println("Done");
thread1 = new Thread(myRunnable);
thread2 = new Thread(myRunnable);
thread1.start();
thread2.start();
...
}
}
}
for ループの最初の反復で、thread1 と thread2 の両方が NullPointException エラーをスローし、システムは "Done" を出力します。メソッドでそれぞれの start() 呼び出しの前に 2 つのスレッドが開始する理由を知っている人はいますか? ありがとう。(Java のバージョンは 1.6u26)