package com.barcap.test.test00;
import java.util.concurrent.*;
/**
* Created by Sony on 25-04-2019.
*/
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.*;
/**
* Created by Sony on 25-04-2019.
*/
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.*;
/**
* Created by Sony on 25-04-2019.
*/
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 текущий поток - пул-1-нить-7 - результат должен быть 7 текущий поток - пул-1-нить-9 - результат должен быть 9текущий поток - пул-1-нить-8, результат должен быть равен 8; задача выполнена для пула-1-нить-9; результат должен быть равен 9, а результат равен 9; задача выполнена для пула-1-нить-8:быть 8 задача соmplted для 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 текущий поток - пул-1-нить-5 результат должен быть 5 текущий поток - пул-1-нить-4 результат должен быть 4 текущий поток - пул-1-нить-6 - результат долженесли 6 текущий поток - пул-1-нить-7, результат должен быть 7 текущий поток - пул-1-нить-8, результат должен быть 8 текущий поток - пул-1-нить-9, результат должен быть 9задача выполнена для pool-1-thread-9 результат должен быть 9 задача complted для 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-thread-1 результат должен быть 1 результат будущего равен 1
=============================================================
дляexecutorservice результат будет доступен только после выполнения всех задач.
executor completeservice любой доступный результат делает этот возврат.