executorservice 예제


이 예제에서는 실행기Service의 몇 가지 기본 기능을 볼 뿐만 아니라 미래 개체를 처리 합니다., 비동기 계산의 결과. 안녕하세요 Pankaj, 나는이 WorkerPool.java 예제 1에 대한 몇 가지 의심이 있다. WorkerPool.java 예제에서 ThreadFactory 인터페이스를 사용하지만 ThreadPoolExecutor는 생성 중에 전달되지 않는 경우 내부적으로 defaultThreadFactory()를 사용하며 예제에서 명시적으로 수행하는 목적은 무엇입니까? 다음은 ThreadPoolExecutor를 사용하는 스레드 풀 구현 예제입니다. 주어진 예제에서 두 메서드를 사용 하 여 Callable 형식의 작업을 실행 하 고 있습니다. 위의 예제에서 실행기.shutdownNow() 메서드 호출을 주석으로 주석지정하면 모든 작업이 실행된 후에도 주 스레드가 활성 상태로 유지되고 JVM이 중지되지 않습니다. 위의 예제에서는 newWorkStealingPool()을 통해 생성된 또 다른 유형의 실행기를 사용합니다. 이 팩터리 메서드는 Java 8의 일부이며 일반 실행기와 약간 다르게 작동하는 ForkJoinPool 형식의 실행기를 반환합니다. 고정 된 크기의 스레드 풀 ForkJoinPools를 사용 하는 대신 기본적으로 호스트 CPU의 사용 가능한 코어의 수는 주어진된 병렬 처리 크기에 대 한 만들어집니다. 이 예제에서는 호출All호출에 의해 반환되는 모든 선물을 처리하기 위해 Java 8 기능 스트림을 활용합니다. 먼저 각 미래를 반환 값으로 매핑한 다음 각 값을 콘솔에 인쇄합니다. 당신은 아직 스트림에 익숙하지 않은 경우 내 자바 8 스트림 자습서를 읽어보십시오.

좋은 예입니다. 나는 몇 가지 요구 사항이 있습니다. 파일 수를 읽고 데이터를 테이블에 푸시해야합니다. 집행자 서비스가 최적의 방법으로 사용할 수 있다고 생각합니다. 실행기 서비스 1.1 5 스레드가있는 스레드 풀을 만들고 두 개의 작업을 제출하고 Future에서 결과를 얻고 예외를 처리하는 방법을 사용하는 방법을 도와주시겠습니까? 감사합니다, invoke모든 예는 정확히 내가 찾고있는 예입니다! 경우에 따라 이것은 매우 유용합니다. 예를 들어 앱이 비정기적으로 나타나는 작업을 처리해야 하거나 컴파일 타임에 이러한 작업의 수량을 알 수 없는 경우를 예로 들 수 있습니다. 이 예제에서는 고정된 수의 스레드 풀을 만드는 ExecutorService의 요인 메서드를 사용합니다. 이러한 이유로 newFixedThreadPool() 메서드는 풀의 스레드 수를 지정하는 데 사용됩니다.

스레드를 실행하려면 execute() 메서드를 사용하거나 제출()을 사용하여 둘 다 Runnable을 매개 변수로 사용할 수 있습니다. execute() 메서드는 실행기 클래스의 구현에 따라 달라 지 며 새 스레드, 풀링된 스레드 또는 호출 스레드에서 Runnable을 수행할 수 있습니다. submit() 메서드는 제출 작업을 나타내는 Future를 반환하여 execute()를 확장합니다. 일반적으로 작업은 Runnable 또는 Callable 인터페이스를 구현하여 만들어집니다. 두 경우의 예를 살펴보겠습니다. 예를 들어, 다음 코드 줄은 10개의 스레드가 있는 스레드 풀을 만듭니다: 예약된 스레드풀익스커의 인스턴스는 편리한 팩터리 API, java.util.concurrent.Executors.newScheduledThreadPool(int corePoolSize) 또는 오버로드 된 버전 실행기.new예약 스레드 풀 (int 코어풀 크기, 스레드 팩토리 스레드팩토리).