1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
package com.dvp;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
publicclassTest{
publicstaticvoid main(String[] args)throwsException{
ExecutorService executor =Executors.newSingleThreadExecutor();
Future<String> futureReponse = executor.submit(newReponse());
try{
System.out.println("Votre réponse?");
System.out.println(futureReponse.get(8, TimeUnit.SECONDS)); //Donne au future 8secondes pour répondre
System.out.println("D'accord");
}catch(TimeoutException e){
futureReponse.cancel(true); //La réponse n'a pas était donnée dans les temps...
System.out.println("Trop tard!");
}
executor.shutdownNow();
}
}
classReponseimplementsCallable<String>{
@Override
publicString call()throwsException{
while(!Thread.interrupted()){
// si la reponse est entrée, tu la retourne.
}
}
} |
Partager