여러 가지 방법이 방법의 스레드 자바 구현입니까? 달성하는 방법에 대한 반환 값 스레드?

여러 가지 방법이 방법의 스레드 자바 구현입니까? 달성하는 방법에 대한 반환 값 스레드?

Java 스레드의 개발에서 스레드를 설정하는 여러 가지 방법이있다? 당신이 정보를 스레드에 의해 반환하는 데 필요한 경우 어떻게 할까? 당신은 달성 할 수 있는가? 카이거 반환 값이 다시 가져 방법 모두 스레드와 소스 코드 공유를 통해.

A : 된 타입의 반환 값이 없습니다

1 : 스레드 클래스 상속

2 : Runnable를 구현

모두를 캡처하는 모든 일반적으로 사용되는 코드 데모입니다.

1 : 스레드 클래스 상속 문구

정의 :이 유형은 스레드 클래스를 필요로 확장 한 다음 스레드 클래스의 run 메소드를 구현합니다.

0f03mbCozWy

편집

2 : Runnable를 표현을 구현 :

클래스가 구현하는 인터페이스 Runable, 다시 실행 방법을 정의합니다.

새로 만들기 스레드 객체가 생성자를 사용하여 매개 변수가, 매개 변수는 실행 가능하다. 그런 다음 thread.start ()

0f03mcUBm2y

편집

2 : 반환 값

3 : 실현 호출 가능 <V> 인터페이스

단계 :

호출 클래스가 구현하는 인터페이스 재 호출 단계;

호출의 시간에, 스레드가 참조 구조를 가지고 사용 후 참조 구조가이 클래스를 FutureTask 사용하고 할 필요가있다.

get 메소드를 호출하는 마지막 작업.

다음과 같이 코드입니다 :

0f03mcs7xPU

편집

결과 :

0f03mdH2i5w

편집

호출 반환 값 자료 :

반환 값이 FutureTask에서 얻을 수 있기 때문에 우리는 FutureTask이 클래스에서 시작합니다. 클래스 다이어그램을 살펴보십시오 :

0f03meLGLr6

편집

FutureTask는 RunnableFuture 인터페이스 RunnableFuture 인터페이스 상속 미래와의 Runnable 인터페이스를 깨달았다.

0f03medKOki

편집

0f03mf52aVE

편집

우리는 돌아올 수없는 단 하나의 실행 값 방법을 발견,이 인터페이스 RunnableFuture를 찾습니다. 그런 다음, 반환 된 데이터는 스레드를 달성하기 위해 어떤 클래스입니까? 사실 FutureTask 클래스 내부에서. 우리는 FuntrueTask이 범주를 살펴 :

0f03mfPPstk

편집

재 입력 실행 방법. 마지막으로, 세트 결과가있다. 설정 방법이 있기 때문에. 데모 task.get () 메소드를 살펴 보자 :

0f03mfozI5g

편집

방법에 반환 값을 가져옵니다.

따라서, 발견 된 값을 리턴하는 이유 호출 인터페이스를 달성했다.

4 : 생성하는 스레드 풀 스레드를 사용하여

스레드 풀 스레드의 사용은 생성, 당신은 반환 값을 가질 수 있습니다, 당신은 값을 반환 할 수 없습니다. 사용 미이행에 대처하기 위해이 최상위 인터페이스.

의는 관계 집행 인 인터페이스를 살펴 보도록하자. 도는 다음과 같습니다 :

0f03mgPDELA

편집

어느 익숙한 ThreadPoolExecutor입니다 및로 스케줄을 보았다

4.1 : 집행자를 사용하여 더 리턴 가치가 스레드를 만들 수 없습니다 :

0f03mh928Jc

편집

설명 : 여기에 돌아올 수없는 값, 사실의 Runnable의 run 메소드를 호출합니다.

4.2 : 반환 값 데모

클래스 구현이 호출 인터페이스를 만듭니다. 도는 다음과 같습니다 :

0f03mhdB0T2

편집

이 인터페이스를 통해, 우리는 반환 값이 있음을 알고있다.

0f03mi4A9QW

편집

세 : 요약

자바 스레드는 네 가지 방법을 구현했습니다 :

우리는 교환뿐만 아니라 두 가지 방법과 같은 반환 값을 값없이 두 종류 가장 잘 알고 있습니다. 그들은 :

스레드의 Runnable 및 호출 가능 및 스레드 풀


추천

출처blog.51cto.com/kaigejava/2477296