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.
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.
<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)
}
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.
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!