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

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

Patricia Arquette
풀어 주다: 2024-11-28 04:25:13
원래의
392명이 탐색했습니다.

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>
<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)
로그인 후 복사

}

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿