Maison >Java >javaDidacticiel >Comment puis-je créer un ExecutorService qui interrompt les tâches après un délai d'attente ?

Comment puis-je créer un ExecutorService qui interrompt les tâches après un délai d'attente ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-28 04:25:13454parcourir

How Can I Create an ExecutorService That Interrupts Tasks After a Timeout?

Timeout Executor Service

Présentation

Dans ce contexte, nous nous intéressons à une implémentation ExecutorService capable d'interrompre les tâches qui dépassent un timeout prédéfini.

Implémentations existantes

Une de ces implémentations est TimeoutThreadPoolExecutor, qui fournit un mécanisme permettant de spécifier une durée d'expiration pour les tâches soumises.

Détails de l'implémentation

<br>import java.util.List;<br>importer java.util.concurrent.*;</p>
<p>classe publique TimeoutThreadPoolExecutor extends ThreadPoolExecutor {</p>
<pre class="brush:php;toolbar:false">private final long timeout;
private final TimeUnit timeoutUnit;

// ... (rest of the implementation)

}

Usage

Pour utiliser ce service d'exécution, créez simplement une instance en spécifiant le délai d'attente souhaité. :

TimeoutThreadPoolExecutor executor = new TimeoutThreadPoolExecutor(..., timeout, TimeUnit.MILLISECONDS);

Ensuite, soumettez vos tâches au exécuteur testamentaire comme d'habitude. Les tâches qui dépassent le délai d'attente spécifié seront interrompues.

Approche alternative

Vous pouvez également utiliser un ScheduledExecutorService :

ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);
Future<?> handler = executor.submit(new Callable() { /* ... */ });
executor.schedule(() -> handler.cancel(true), 10000, TimeUnit.MILLISECONDS);

Cette stratégie garantit que la tâche est interrompue après 10 secondes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn