함수가 여러 스레드 (함수 호출이 발생한 후 생성됨)에 의해 처리되는 함수가 있습니다. 그러나 프로그램을 실행할 때 함수가 끝나기 전에 스레드에서 NullPointerException을받습니다. Java에서 스레드를 일찍 시작하지 않도록 지정하려면 어떻게합니까?Java Runnables는 호출되기 전에 실행을 시작합니다.
for 루프를 통해 첫 번째 반복에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();
...
}
}
}
, thread1와 thread2가 NullPointException 오류가 발생합니다 모두, 시스템은 "완료"인쇄됩니다. 누구도 두 스레드가 각각의 start() 메소드를 호출하기 전에 왜 시작하는지 알 수 있습니까? 감사합니다. . (자바 버전은 1.6u26 임)
실제로 _relevant_ 코드와 실행 방법의 예를 게시하십시오. 주장과 함께. –
> "for (someNumberOfRuns) {" Java 코드로 구문 분석하지 않습니다. 다시 시도하십시오. –
Thread를 확장하지 말고, 혼동을 피하기 위해 Runnable을 구현해야합니다. 문제를 컴파일하고 보여주는 실제 코드를 게시 할 수 있습니까? –