package com.barcap.test.test00;
import java.util.concurrent.*;
public class ExecutorCompletest00 {
public static void main(String[] args) {
ExecutorService exc= Executors.newFixedThreadPool( 10 );
ExecutorCompletionService executorCompletionService= new ExecutorCompletionService( exc );
for (int i=1;i<10;i++){
Task00 task00= new Task00( i );
executorCompletionService.submit( task00 );
}
for (int i=1;i<20;i++){
try {
Future<Integer> future= (Future <Integer>) executorCompletionService.take();
Integer inttest=future.get();
System.out.println(" the result of completion service is "+inttest);
break;
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
}
================================================ =====
package com.barcap.test.test00;
import java.util.*;
import java.util.concurrent.*;
public class ExecutorServ00 {
public static void main(String[] args) {
ExecutorService executorService=Executors.newFixedThreadPool( 9 );
List<Future> futList= new ArrayList <>( );
for (int i=1;i<10;i++) {
Future result= executorService.submit( new Task00( i ) );
futList.add( result );
}
for (Future<Integer> futureEach :futList ){
try {
Integer inm= futureEach.get();
System.out.println("the result of future executorservice is "+inm);
break;
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
}
================================================ =========
package com.barcap.test.test00;
import java.util.concurrent.*;
public class Task00 implements Callable<Integer> {
int i;
public Task00(int i) {
this.i = i;
}
@Override
public Integer call() throws Exception {
System.out.println(" the current thread is "+Thread.currentThread().getName() +" the result should be "+i);
int sleepforsec=100000/i;
Thread.sleep( sleepforsec );
System.out.println(" the task complted for "+Thread.currentThread().getName() +" the result should be "+i);
return i;
}
}
================================================ ====================
실행기 완료 서비스에 대한 로그 차이 :현재 스레드는 pool-1-thread-1, 결과는 1이어야합니다. 현재 스레드는 pool-1-thread-2, 결과는 2 여야합니다. 현재 스레드는 pool-1-thread-3, 결과는 3이어야합니다. 스레드는 pool-1-thread-4, 결과는 4 여야합니다. 현재 스레드는 pool-1-thread-6이고, 결과는 6이어야하며, 현재 스레드는 pool-1-thread-5, 결과는 5 여야합니다. 현재 스레드는 pool-1-thread-7 결과는 7이어야합니다. 현재 스레드는 pool-1-thread-9이고 결과는 9 여야합니다. 현재 스레드는 pool-1-thread-8이고 결과는 8이어야합니다. 작업은 pool- 1-thread-9 결과는 9이어야합니다. 결과는 9입니다. 작업은 pool-1-thread-8에 대해 압축되고 결과는 8이어야합니다. 작업은 pool-1-thread-7에 대해 압축되었습니다. 결과는 7이어야합니다. pool-1-thread-6 결과는 6이되어야합니다.pool-1-thread-5 결과는 5 여야합니다. 작업은 pool-1-thread-4에 대해 압축되고 결과는 4 여야합니다. 작업은 pool-1-thread-3에 대해 압축되고 결과는 3이어야합니다.
풀 -1- 스레드 -2에 대해 압축 된 작업 결과는 2 여야합니다.
현재 스레드는 pool-1-thread-1, 결과는 1이어야합니다. 현재 스레드는 pool-1-thread-3, 결과는 3이어야합니다. 현재 스레드는 pool-1-thread-2, 결과는 2 여야합니다. 스레드는 pool-1-thread-5, 결과는 5 여야합니다. 현재 스레드는 pool-1-thread-4, 결과는 4 여야합니다. 현재 스레드는 pool-1-thread-6이고, 결과는 6이어야합니다. 현재 스레드는 pool-1-thread-7 결과는 7이어야합니다. 현재 스레드는 pool-1-thread-8이고 결과는 8이어야합니다. 현재 스레드는 pool-1-thread-9이고 결과는 9 여야합니다. 작업은 pool- 1-thread-9 결과는 9 여야합니다. 작업은 pool-1-thread-8에 대해 압축되고 결과는 8이어야합니다. 작업은 pool-1-thread-7에 대해 압축되고 결과는 7이어야합니다. thread-6 결과는 6이어야합니다. 작업은 pool-1-thread-5에 대해 압축됩니다.5 풀 -1- 스레드 -4에 대해 압축 된 작업 결과는 4 여야 풀 -1- 스레드 -3에 대해 압축 된 작업 결과는 3이어야하며 풀 -1- 스레드 -2에 대해 압축 된 작업 결과는 다음과 같아야합니다. 2 풀 -1- 스레드 -1에 대해 압축 된 작업 결과는 1이어야합니다. 미래의 결과는 1입니다.
================================================ =====
executorservice의 경우 모든 작업이 완료된 후에 만 결과를 확인할 수 있습니다.
실행자 완료 서비스를 사용할 수있는 모든 결과를 반환합니다.