최근에 코드에 대한 질문을 다음과 같이 보았습니다.
코드 사본은 다음과 같습니다.
public static void main (String args []) {
스레드 t = 새 스레드 () {
public void run () {
pong ();
}
};
t.run ();
System.out.println ( "Ping");
}
정적 void pong () {
System.out.println ( "Pong");
}
질문, 결과는 무엇을 출력합니까?
나는 그것을 여러 번 달렸고, 그것은 탁구로 판명되었습니다. 나중에 마침내 시작 () 메소드가 아니라 run () 메소드를 호출하는 핵심 포인트 인 스레드 객체 T를 발견했습니다. 나중에 BreakPoint 모드 디버깅을 열었고 Run () 메소드를 호출 할 때 전체 프로그램에 스레드가 하나만 있었음을 발견했습니다. 그래야만 CPU의 기본 스레드와 경쟁 할 수 있으며 여러 결과가있을 수 있지만 다음 출력 방법이 빠르게 실행되므로 기본적으로 "Ping Pong"의 출력입니다.
따라서 run ()와 start ()의 차이점은 다음과 같습니다.
run ()은 런닝 가능한 인터페이스에 정의 된 메소드이며, 이는 클라이언트 프로그래머 가이 메소드에서 자체 기능 코드를 작성할 수 있도록하는 것입니다. 직접 전화와 일반 수업으로 자신의 회원 방법을 호출하는 것에는 차이가 없습니다.
start ()는이 메소드가 호출되면 스레드가 실행되기 시작하는 플래그입니다.
따라서 별도의 스레드를 작성하려면 스레드를 상속하는 것이 가장 좋습니다. 새로운 스레드 (New YourRunnableClass ())로 메인 스레드에서 호출해야합니다. .