동시에 실행되는 두 개의 스레드를 만들려고합니다. 현재 스레드가 종료 된 후 스레드가 실행되는 출력에서 이음새가 동시에 실행되는지 테스트하려면 어떻게해야합니까? 이것이 일어나고 있습니까 아니면 동시에 실행되고 있습니까?
public class Start {
public static void main(String[] args) {
new ThreadOne();
Thread t = Thread.currentThread(); // Static Method
t.setName("Thread One");
System.out.println(t);
for(int i = 0; i<=100; i++) {
System.out.println("Main Thread: " + i);
}
}
}
public class ThreadOne implements Runnable {
Thread t;
public ThreadOne() {
t =new Thread(this, "Demo Thread");
System.out.println("Child Thread" + t);
t.start();
}
@Override
public void run() {
for(int i = 0; i<=100; i++) {
System.out.println("Child Thread: " + i);
}
}
}
산출
Main Thread: 0
Main Thread: 1
Main Thread: 2
Main Thread: 3
Main Thread: 4
Main Thread: 5
Main Thread: 6
Main Thread: 7
Main Thread: 8
Main Thread: 9
Main Thread: 10
Child Thread: 0
Child Thread: 1
Child Thread: 2
Child Thread: 3
Child Thread: 4
Child Thread: 5
Child Thread: 6
Child Thread: 7
Child Thread: 8
Child Thread: 9
Child Thread: 10
이 경우 자식 스레드가 시작되기 전에 주 스레드가 완료된 것처럼 보입니다. 그리고 당신이 작성한 코드 에는 두 스레드의 동시 실행 또는 인터리브 실행 이 필요한 것은 없습니다 .
더 광범위한 질문이 흥미 롭습니다.
동시에 실행되는 두 개의 스레드를 만들려고합니다. 동시에 실행 중인지 어떻게 테스트 할 수 있습니까?
실제로 응용 프로그램의 두 스레드가 실제로 동시에 실행되는지 여부 를 확실하게 테스트하거나 증명하는 것이 가능하다고 생각하지 않습니다 . 내가 아는 한, (문자 그대로) 동시에 실행되는 스레드에 의해 생성 될 수있는 외부에서 관찰 가능한 실행 패턴은 이론적으로 단일 코어가있는 시스템에서 시간 분할 스레드에 의해 생성 될 수도 있습니다.
실제로 시간 분할의 세분성은 일반적으로 동작의 차이를 볼 수 있도록합니다 . 그러나 특정 응용 프로그램의 코드와 함께 사용 가능한 증거를 사례별로 평가해야한다고 생각합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다