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
Libérer: 2024-11-28 04:25:13
original
368 Les gens l'ont consulté

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">private final long timeout;
private final TimeUnit timeoutUnit;

// ... (rest of the implementation)
Copier après la connexion

}

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);
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal