> Java > java지도 시간 > 타이머 및 ExecutorService를 사용하여 Java에서 작업에 대한 시간 초과 메커니즘을 어떻게 구현할 수 있습니까?

타이머 및 ExecutorService를 사용하여 Java에서 작업에 대한 시간 초과 메커니즘을 어떻게 구현할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-25 12:39:09
원래의
718명이 탐색했습니다.

How Can I Implement a Timeout Mechanism for Tasks in Java using Timers and ExecutorService?

Java에서 타이머 설정

이 질문은 처음에는 데이터베이스 연결을 시도하고 연결 문제가 있는 경우 예외를 발생시키는 타이머 설정에 중점을 두었습니다. 생기다. 더 나아가 지정된 기간 동안 작업을 실행하도록 타이머를 요청하고 작업이 해당 시간을 초과하면 예외를 발생시킵니다.

타이머 설정

타이머를 설정하려면 java.util.Timer 객체를 생성하세요.

Timer timer = new Timer();
로그인 후 복사

작업을 한 번 실행하려면 다음을 사용하여 예약하세요. Timer.schedule():

timer.schedule(new TimerTask() {
    @Override
    public void run() {
        // Database code here
    }
}, 2*60*1000); // 2 minutes in milliseconds
로그인 후 복사

지정된 간격으로 작업을 반복하려면 Timer.scheduleAtFixedRate():

timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        // Database code here
    }
}, 2*60*1000, 2*60*1000);
로그인 후 복사

Timeout Mechanism

작업 시간 초과를 설정하려면 ExecutorService:

ExecutorService service = Executors.newSingleThreadExecutor();

try {
    Runnable r = new Runnable() {
        @Override
        public void run() {
            // Database task
        }
    };

    Future<?> f = service.submit(r);

    f.get(2, TimeUnit.MINUTES); // attempt the task for 2 minutes
}
catch (InterruptedException e) {
    // Thread interrupted during sleep, wait, or join
}
catch (TimeoutException e) {
    // Took too long!
}
catch (ExecutionException e) {
    // Exception within the Runnable task
}
finally {
    service.shutdown();
}
로그인 후 복사
이 코드는 작업이 2분 이내에 완료되면 정상적으로 실행됩니다. 그렇지 않으면 TimeoutException이 발생하고 스레드는 데이터베이스 또는 네트워크 연결에서 예외가 발생할 때까지 계속 실행됩니다.

위 내용은 타이머 및 ExecutorService를 사용하여 Java에서 작업에 대한 시간 초과 메커니즘을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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