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;
}
}
================================================== ====================
Unterschied der Protokolle für den Executor Completion Service:Der aktuelle Thread ist Pool-1-Thread-1. Das Ergebnis sollte 1 sein. Der aktuelle Thread ist Pool-1-Thread-2. Das Ergebnis sollte 2 sein. Der aktuelle Thread ist Pool-1-Thread-3. Das Ergebnis sollte 3 sein Thread ist Pool-1-Thread-4 Das Ergebnis sollte 4 sein. Der aktuelle Thread ist Pool-1-Thread-6. Das Ergebnis sollte 6 sein. Der aktuelle Thread ist Pool-1-Thread-5. Das Ergebnis sollte 5 sein. Der aktuelle Thread ist Pool-1-Thread-7 Das Ergebnis sollte 7 sein. Der aktuelle Thread ist Pool-1-Thread-9. Das Ergebnis sollte 9 sein. Der aktuelle Thread ist Pool-1-Thread-8. Das Ergebnis sollte 8 sein. Die Aufgabe wurde für Pool erledigt. 1-Thread-9 Das Ergebnis sollte 9 sein. Das Ergebnis ist 9 Die Aufgabe wurde für Pool-1-Thread-8 erledigt. Das Ergebnis sollte 8 sein. Die Aufgabe wurde für Pool-1-Thread-7 erledigt. Das Ergebnis sollte 7 sein. Die Aufgabe wurde erledigt Pool-1-Thread-6 Das Ergebnis sollte 6 die Aufgabe sein, für die erledigt wurdePool-1-Thread-5 Das Ergebnis sollte 5 sein. Die Aufgabe wurde für Pool-1-Thread-4 erledigt. Das Ergebnis sollte 4 sein. Die Aufgabe wurde für Pool-1-Thread-3 erledigt. Das Ergebnis sollte 3 sein
Die für Pool-1-Thread-2 abgeschlossene Aufgabe sollte 2 sein
Der aktuelle Thread ist Pool-1-Thread-1. Das Ergebnis sollte 1 sein. Der aktuelle Thread ist Pool-1-Thread-3. Das Ergebnis sollte 3 sein. Der aktuelle Thread ist Pool-1-Thread-2. Das Ergebnis sollte 2 der aktuelle sein Thread ist Pool-1-Thread-5 Das Ergebnis sollte 5 sein. Der aktuelle Thread ist Pool-1-Thread-4. Das Ergebnis sollte 4 sein. Der aktuelle Thread ist Pool-1-Thread-6. Das Ergebnis sollte 6 sein. Der aktuelle Thread ist Pool-1-Thread-7 Das Ergebnis sollte 7 sein. Der aktuelle Thread ist Pool-1-Thread-8. Das Ergebnis sollte 8 sein. Der aktuelle Thread ist Pool-1-Thread-9. Das Ergebnis sollte 9 sein. Die Aufgabe wurde für Pool erledigt. 1-Thread-9 Das Ergebnis sollte 9 sein. Die Aufgabe wurde für Pool-1-Thread-8 erledigt. Das Ergebnis sollte 8 sein. Die Aufgabe wurde für Pool-1-Thread-7 erledigt. Das Ergebnis sollte 7 sein. Die Aufgabe wurde für Pool-1 erledigt. Thread-6 das Ergebnis sollte 6 die Aufgabe sein, die für Pool-1-Thread-5 das Ergebnis erledigt wurdesollte 5 die Aufgabe sein, die für Pool-1-Thread-4 erledigt wurde, das Ergebnis sollte 4 die Aufgabe sein, die für Pool-1-Thread-3 erledigt wurde, das Ergebnis sollte 3 sein, die Aufgabe sollte für Pool-1-Thread-2 erledigt sein, das Ergebnis sollte sein 2 Die Aufgabe für Pool-1-Thread-1 abgeschlossen. Das Ergebnis sollte 1 sein. Das Ergebnis der Zukunft ist 1
================================================== =====
Für Executorservice ist das Ergebnis erst verfügbar, nachdem alle Aufgaben erledigt wurden.
Executor Completeservice Jedes verfügbare Ergebnis macht diese Rückgabe.