>Java >java지도 시간 >시간 초과 후 작업을 중단하는 ExecutorService를 어떻게 만들 수 있나요?

시간 초과 후 작업을 중단하는 ExecutorService를 어떻게 만들 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-28 04:25:13440검색

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

Timeout Executor Service

개요

이런 맥락에서 우리는 미리 정의된 시간 초과를 초과하는 작업을 중단할 수 있는 ExecutorService 구현에 관심이 있습니다.

기존 구현

이러한 구현 중 하나는 TimeoutThreadPoolExecutor는 제출된 작업에 대한 시간 초과 기간을 지정하는 메커니즘을 제공합니다.

구현 세부 정보

<br>import java.util.List;<br>java.util.concurrent.*;</p>
<p>공개 클래스 가져오기 TimeoutThreadPoolExecutor는 ThreadPoolExecutor {</p>
<pre class="brush:php;toolbar:false">private final long timeout;
private final TimeUnit timeoutUnit;

// ... (rest of the implementation)

}

Usage

를 확장합니다. 이 실행기 서비스를 활용하려면 원하는 항목을 지정하여 인스턴스를 생성하기만 하면 됩니다. timeout:

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

그런 다음 평소대로 실행자에게 작업을 제출합니다. 지정된 시간 초과를 초과하는 작업은 중단됩니다.

대체 접근 방식

또는 ScheduledExecutorService를 사용할 수 있습니다.

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

이 전략은 작업이 다음 시간 이후에 중단되도록 보장합니다. 10초.

위 내용은 시간 초과 후 작업을 중단하는 ExecutorService를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.