스레드를 사용자 정의하는 두 가지 방법
실행 가능한 인터페이스 구현 클래스를 사용자 정의한 다음 스레드를 구성합니다. 즉, 실행 가능한 인터페이스 클래스를 스레드로 전달하십시오.
새로운 스레드 또는 스레드 서브 클래스를 작성하여 실행 메소드를 무시합니다. (새로운 스레드와 실행 방법을 재정의하는 방법은 실제로 익명의 내부 클래스로가는 방법입니다)
샘플 코드
public static void main (string [] args) {new Thread (new runnable () {@overridepublic void run () {system.out.println ( "runnable target을 전달하여 스레드 생성!");}}); new Thread () {@overridepublic void run () {system.out.println 생성 !");};}.시작();}1과 2의 스레드를 구성하기위한 위에서 언급 한 방법은 코드 쓰기 방법으로 인해 익명 클래스 객체로 설계되었습니다. 다음과 같은 보조 지침이 있습니다.
1. 첫 번째 단락의 경우, 나는 익명으로 달리는 인스턴스로 직접 통과했습니다. 실행 가능한 인스턴스를 사용자 정의한 다음 새 스레드 (runnable) 형식으로 스레드를 얻을 수 있습니다.
2. 두 번째 단락의 경우, 스레드 기본 클래스를 확장하기 위해 클래스를 구체적으로 정의한 다음 새 스레드 클래스를 새로 정의 할 수 있습니다.
3.이 두 세그먼트의 경우 익명 클래스 객체를 새 스레드로 직접 만듭니다. 가변 스레드 1 및 스레드 2를 정의한 다음 thread1.start () Thread2.start ()를 사용하여 스레드를 시작할 수 있습니다.
소스 코드 분석
이 두 방법의 차이점은 무엇입니까? 둘의 최종 효과는 동일합니다. 소스 코드 레벨에서 스레드의 기본 실행 메소드 (덮어 쓰지 않은 경우)는 대상을 호출하는 실행 메소드입니다 (대상이 비어 있지 않음). 대상은 우리가 통과 한 런닝 가능한 인터페이스 클래스입니다.
public synchronized void start () {if (threadStatus! = 0) throw new new neveralthreadstateException (); group.add (this); boolean start = false; try {start0 (); start0 (); start = true;} {if (! start)) {group.threadStartFailed (this);}}}}}}}}}}}}.스레드의 시작은 결국 Native Start0을 호출하여 JVM 가상 머신이 스레드의 실행 메소드를 호출하게됩니다.
public void run () {if (target! = null) {target.run ();}}여기서 대상은 스레드에서 실행 가능한 객체입니다
개인 실행 가능한 목표;
요약
스레드를 다시 쓰는 실행 방법은 시작할 때 스레드에서 실행되는 실행 메소드입니다.
실행 가능하면 스레드는 시작할 때 기본 실행 메소드를 실행합니다. 실행 방법은 전달 된 대상을 호출하고 대상의 실행 방법을 호출합니다.
둘 다의 효과는 동일합니다. 여기서 코드 세부 사항의 차이점을 볼 수 있도록 도와줍니다.
위의 것은 편집기가 소개 한 Java 스레드의 시작 및 실행 방법에 대한 포괄적 인 분석입니다. 모든 사람에게 도움이되기를 바랍니다. 더 알고 싶다면 Wulin.com에주의를 기울이십시오!