What is Executor framework in java?

실행 프로그램 프레임 워크는 자바에 도입 된 1.5 그리고 java.util.concurrent의 패키지의 일부인. 실행 프로그램 프레임 워크는 자바 멀티 스레딩의 실제 구현을 통해 추상화. 그것은 호출 표준화를 위해 사용된다, 예약, 생성자를 작성하는 동안 정의 실행 일련의 정책에 따라 실행 및 비동기 작업의 제어.

자바 전에 1.5, 멀티 스레딩 애플리케이션은 스레드 그룹을 사용하여 만든 , 스레드 풀 또는 사용자 정의 스레드 풀. 이제 각 스레드의 제어는 다음 사항을 염두에 유지 프로그래머에 의해 수행되어야한다
● 동기화
● 잠금
● 알림
● 죽은 잠금
및 많은 즉 애플리케이션 요구로부터 발생. 약간의 시간이 그 스레드 동작이 또한 애플리케이션이 배치 및 실행 환경에 의존하기 때문에 멀티 스레딩 애플리케이션을 제어하는​​ 것은 매우 어렵다. 예를 들어 프로세서 속도, RAM 크기, 모든 대역폭은 멀티 스레딩 프로그램에 직접적인 영향을 미친다. 그래서 당신은 아키텍처를 작성하기 전에 염두에두고 이러한 모든 요소를​​ 계속해야.
집행자 프레임 워크 작업에 대한 생각에 대해 쉽게 추상화와 멀티 스레딩 응용 프로그램을 제공합니다. 대신 스레드의 관점에서 생각, 이제 응용 프로그램의 Runnable의 인스턴스 단순히 거래 (기본적으로 작업의 컬렉션 인). 후 처리가 실행 프로그램에 전달. ExecutorService를 인터페이스는 단순한 집행자 인터페이스를 확장하고, 실행 프로그램 프레임 워크를 관리하는 라이프 사이클 방법이 있습니다.
실행 프로그램 프레임 워크 실행 가능한 또는 호출 가능의 인스턴스를 사용하여 작업을 나타냅니다. 실행 가능한의 실행 () 방법은 값을 반환 또는 체크 예외를 throw하지 않습니다. 호출은 그 지역에서 더 많은 기능 버전입니다. 이는 통화를 정의 () 미래의 처리에 이용 될 수있는 계산 된 값의 반환을 허용 방법. 그리고 그것은 또한 필요한 경우 예외가 발생합니다.
FutureTask 클래스는 처리에 대한 미래의 정보를 가져 오는 데 사용됩니다. 이 클래스의 인스턴스는 호출 가능 또는의 Runnable를 포장 할 수 있습니다. 사용자는 전송의 반환 값으로서 이것의 인스턴스를 얻을 수있다 () ExecutorService입니다 방법. 당신은 또한 수동으로 실행 호출하기 전에 FutureTask에 작업을 마무리 할 수​​ 있습니다 () 방법.
다음은 가능한 ThreadPoolExecutor를 구현하는 단계는 함수.
● 단일 / 다중 스레드의 풀을 생성.
● 큐는 모든 작업을 잡고 만들어 지지만 이러한 작업은 아직 풀에서 스레드에 할당되지 않은. 경계 및 바운드 대기열을 사용할 수 있습니다.
하나 이상의 태스크가 큐에 할당 할 수없는 경우 ● 거절 처리기 상황을 처리하는 데 사용되는. 기본 거부 정책에 따라, 단순히 RejectedExecutionException 런타임 예외가 발생합니다, 응용 프로그램은 그것을 잡으려고하거나 폐기 할 수 있습니다.

예를 따르는 것은된다 실행기 워크의 수명을 관찰. 여기에서 우리는 기초 단계와 기본 인터페이스에 대해 설명합니다. 신청자 필요성의 다른 종류를 처리하는 데 사용할 수 많은 속성과 서브 클래스가 있습니다.

다음 클래스는 Runnable를 구현하고 그 인스턴스는 코드의 다음 섹션에서 작업으로 사용됩니다.

public class jobPrint implements Runnable {
private final String name;
private final int delay;
public jobPrint(String name, int delay) {
this.name = name;
this.delay = delay;
}
public void run() {
System.out.println("Starting: " + name);
try {
Thread.sleep(delay);
} catch (InterruptedException ignored) {
}
System.out.println("Done with: " + name);
}
}

다음 클래스는 실행 프로그램 작업을 시행하고 있습니다.

import java.util.concurrent.*;
import java.util.Random;

공용 클래스 UseExecutorService {
공공 정적 무효 메인(String args[]) {
무작위 랜덤 = 새로운 무작위();
ExecutorService입니다 실행기 = Executors.newFixedThreadPool(3);
// 대기 시간을 요약하는 것은 알고 셧다운시에
INT있는 waittime = 500;
용 (내가를 int로 = 0; 나는<10; 난 ) {
문자열 이름 = “NamePrinter ” + 나는;
INT 시간 = random.nextInt(1000);
있는 waittime = 시간;
실행 가능한 주자 = 새로운 jobPrint(이름, 시간);
System.out.println(“첨가: ” + 이름 + ” / ” + 시간);
executor.execute(달리는 사람);
}
시도 {
Thread.sleep(있는 waittime);
executor.shutdown();
executor.awaitTermination
(있는 waittime, TimeUnit.MILLISECONDS);
} 잡기 (예외 : InterruptedException 무시) {
}
System.exit와(0);
}
}

실행기 만들기

먼저 집행자 또는 ExecutorService입니다의 인스턴스를 생성. 실행 프로그램 클래스는 ExecutorService입니다을 만드는 정적 팩토리 메소드의 번호를 가지고. For example, 인 newFixedThreadPool() 초기화 바운드 대기열 및 스레드의 고정 번호 ThreadPoolExecutor입니다 인스턴스를 돌려줍니다. 그리고 newCachedThreadPool () 바운드 대기열 및 스레드의 무제한의 번호로 초기화 ThreadPoolExecutor입니다 인스턴스를 돌려줍니다. 두 번째 경우, 대응 가능합니다없이 무료로 실을 사용할 수있는 경우 기존의 스레드를 다시 사용, 새가 생성되어 풀에 추가됩니다. 제한 시간보다 오래 유휴 한 스레드 풀에서 자동으로 제거됩니다.
이것은 고정 풀입니다 15 스레드.
개인 정적 최종 집행자 실행기 = Executors.newFixedThreadPool(15);
이 캐시 된 스레드 풀이다
개인 정적 ExecutorService입니다 간부 = Executors.newCachedThreadPool();
사용자 정의 스레드 풀 집행은 다음과. 매개 변수 값은 애플리케이션에 따라 달라질 필요. 여기에 핵심 풀 데 5 어느 스레드를 동시에 실행할 수 있으며, 최대 개수이다 10. 큐는 유지 할 수있다 200 tasks. 여기에 하나의 포인트는 풀 크기가 모든 작업을 수용 할 수있는 높은 측에 보관해야 함을 기억해야한다. 유휴 시간 제한은 다음과 같이 유지 5 MS.
개인 정적 최종 집행자 실행기 = 사용해, 새로운 ThreadPoolExecutor(5, 10, 50000엘, TimeUnit.MILLISECONDS, 새로운 LinkedBlockingQueue 등(200));

하나 이상의 작업을 작성하고 큐에

하나 이상의 작업을 만들기의 Runnable 또는 Callable를 하나의 인스턴스로 수행 할.

집행자에 작업 제출

ExecutorService입니다을 만든 후, 당신은 제출 중 하나를 사용하여에 작업을 제출해야 () 또는 실행 () 방법. 이제 풀에서 무료로 스레드가 자동으로 큐에서 작업을하고 그것을 실행합니다. 이제 모든 작업까지 계속 프로세스가 대기열에서 완료.

작업을 실행

이제 실행 프로그램은 작업의 실행을 관리하는 책임이있다, 스레드 풀과 큐. 풀은 최소 스레드 구성된 수보다 적은 경우, 그 한계가 설정 값에 도달 할 때까지 새 스레드는 대기 작업을 처리하기 위해 만들어집니다. 번호 구성된 최소값보다 높으면, 다음 풀은 더 이상 스레드를 시작하지 않습니다. 대신, 스레드가 요청을 처리하도록 해제 될 때까지 태스크 큐. 큐가 가득 찬 경우, 다음, 새로운 쓰레드를 처리하기 시작한다.

실행 프로그램 종료

종료는 그 종료를 호출하여 실행 () 방법. 당신은 그것을 정상적으로 종료하도록 선택할 수 있습니다, 또는 갑자기.

하나는 "에 대한 생각What is Executor framework in java?

============================================= ============================================== 아마존에서 최고의 Techalpine 책을 구입하십시오,en,전기 기술자 CT 밤나무 전기,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share