Heim >Java >javaLernprogramm >Wie kann ich einen ExecutorService erstellen, der Aufgaben nach einer Zeitüberschreitung unterbricht?
In diesem Zusammenhang sind wir an einer ExecutorService-Implementierung interessiert, die in der Lage ist, Aufgaben zu unterbrechen, die einen vordefinierten Timeout überschreiten.
Eine solche Implementierung ist TimeoutThreadPoolExecutor, der einen Mechanismus zum Festlegen einer Timeout-Dauer für übermittelte Aufgaben bereitstellt.
<br>import java.util.List;<br>import java.util.concurrent.*;</p> <p>öffentliche Klasse TimeoutThreadPoolExecutor erweitert ThreadPoolExecutor {</p> <pre class="brush:php;toolbar:false">private final long timeout; private final TimeUnit timeoutUnit; // ... (rest of the implementation)
}
Um diesen Executor-Dienst zu nutzen, erstellen Sie einfach eine Instanz und geben Sie das gewünschte Timeout an :
TimeoutThreadPoolExecutor executor = new TimeoutThreadPoolExecutor(..., timeout, TimeUnit.MILLISECONDS);
Dann übermitteln Sie Ihre Aufgaben an den Testamentsvollstrecker als üblich. Aufgaben, die das angegebene Timeout überschreiten, werden unterbrochen.
Alternativ können Sie einen ScheduledExecutorService verwenden:
ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); Future<?> handler = executor.submit(new Callable() { /* ... */ }); executor.schedule(() -> handler.cancel(true), 10000, TimeUnit.MILLISECONDS);
Diese Strategie stellt sicher, dass die Aufgabe danach unterbrochen wird 10 Sekunden.
Das obige ist der detaillierte Inhalt vonWie kann ich einen ExecutorService erstellen, der Aufgaben nach einer Zeitüberschreitung unterbricht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!