Existe-t-il un moyen simple d'appeler une méthode de blocage avec un délai d'attente en Java? Je veux pouvoir faire:
// call something.blockingMethod();
// if it hasn't come back within 2 seconds, forget it
si ça a du sens.
Merci.
Existe-t-il un moyen simple d'appeler une méthode de blocage avec un délai d'attente en Java? Je veux pouvoir faire:
// call something.blockingMethod();
// if it hasn't come back within 2 seconds, forget it
si ça a du sens.
Merci.
Vous pouvez utiliser un exécuteur:
ExecutorService executor = Executors.newCachedThreadPool();
Callable<Object> task = new Callable<Object>() {
public Object call() {
return something.blockingMethod();
}
};
Future<Object> future = executor.submit(task);
try {
Object result = future.get(5, TimeUnit.SECONDS);
} catch (TimeoutException ex) {
// handle the timeout
} catch (InterruptedException e) {
// handle the interrupts
} catch (ExecutionException e) {
// handle other exceptions
} finally {
future.cancel(); // may or may not desire this
}
Si le fichier future.get ne revient pas dans les 5 secondes, il lève une exception. Voir javadoc pour plus de détails.
Vous pouvez envelopper l'appel dans un FutureTask
et utiliser la version de timeout de get ().
Voir http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/FutureTask.html.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.