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;
}
}
====================================================== ====================
різниця журналів для служби виконання виконавця:поточний потік - пул-1-потік-1 результат повинен бути 1 поточний потік пул-1-потік-2 результат повинен бути 2 поточний потік є пул-1-потік-3 результат повинен бути 3 поточний потік пул-1-потік-4 результат повинен бути 4 поточний потік пул-1-потік-6 результат повинен бути 6 поточний потік пул-1-потік-5 результат повинен бути 5 поточний потік pool-1-thread-7 результат повинен бути 7 поточний потік pool-1-thread-9 результат повинен бути 9 поточний потік pool-1-thread-8 результат повинен бути 8 завдання виконане для pool- 1-thread-9 результат повинен бути 9 the result is 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
завдання, виконане для pool-1-thread-2, результат повинен бути 2
поточний потік - пул-1-потік-1 результат повинен бути 1 поточний потік є пул-1-потік-3 результат повинен бути 3 поточний потік є пул-1-потік-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-потік-9 результат повинен бути 9 завдання виконано для пулу-1-потік-8 результат має бути 8 завдання виконано для пулу-1-потік-7 результат має бути 7 завдання виконано для пул-1 потік-6 результат повинен бути 6 завдання, виконане для пулу-1-потік-5 результатмає бути 5 завдання, виконане для pool-1-thread-4 результат має бути 4 завдання, виконане для pool-1-thread-3 результат повинен бути 3 завдання, виконане для pool-1-thread-2 результат повинен бути 2 завдання, виконане для pool-1-thread-1, результат повинен бути 1, результат майбутнього - 1
====================================================== =====
для виконавчої служби результат буде доступним лише після виконання всіх завдань.
виконавець завершенняобслуговування будь-який доступний результат зробити це повернення.