JavaTM Platform
Standard Ed. 6

java.util.concurrent
인터페이스 ScheduledExecutorService

모든 슈퍼 인터페이스:
Executor , ExecutorService
기존의 구현 클래스의 일람:
ScheduledThreadPoolExecutor


public interface ScheduledExecutorService
extends ExecutorService

지정된 지연 시간 후 또는 정기적으로 커멘드를 실행하도록(듯이) 스케줄 할 수 있는 ExecutorService 입니다.

schedule 메소드는, 다양한 지연의 설정된 태스크를 작성해, 실행의 취소해 또는 체크에 사용할 수 있는 태스크 객체를 돌려줍니다. scheduleAtFixedRate 메소드 및 scheduleWithFixedDelay 메소드는, 삭제될 때까지 정기적으로 실행되는 태스크를 작성 및 실행합니다.

Executor.execute(java.lang.Runnable)ExecutorService 의 각 submit 메소드를 사용해 송신되는 커멘드는, 요구된 지연이 제로로서 스케줄 설정됩니다. schedule 메소드에서는 제로 또는 부의 지연 (기간은 제외하다)도 허가되어 그 경우는 즉시 실행하는 요구로서 다루어집니다.

모든 schedule 메소드는, 「상대적인」지연 및 기간을 인수로서 받아들입니다만, 절대 일시는 받아들이지 않습니다. Date 로서 나타내지는 절대 시간을 필요한 형식으로 변환하는 것은 간단합니다. 예를 들어 특정의 장래의 date 에 스케줄 설정하려면 ,schedule(task, date.getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS) 를 사용할 수 있습니다. 다만 네트워크 시간 동기 프로토콜이나 클락의 차이등의 요인이 있기 (위해)때문에, 상대적인 지연의 유효기간 (태스크가 유효하게 되는 시점)이 현재의 Date 와 일치할 필요는 없습니다. Executors 클래스는, 이 패키지로 제공되는 ScheduledExecutorService 구현으로 편리한 팩토리 메소드를 제공합니다.

사용예

다음의 클래스에는, 1 시간의 사이, 10 초 마다 beep음이 울도록(듯이) ScheduledExecutorService 를 설정하는 메소드가 있습니다.
 import static java.util.concurrent.TimeUnit. *;
 class BeeperControl {
    private final ScheduledExecutorService scheduler =
       Executors.newScheduledThreadPool(1);

    public void beepForAnHour() {
        final Runnable beeper = new Runnable() {
                public void run() { System.out.println("beep"); }
            };
        final ScheduledFuture<? > beeperHandle =
            scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
        scheduler.schedule(new Runnable() {
                public void run() { beeperHandle.cancel(true); }
            }, 60 * 60, SECONDS);
    }
 }
 

도입된 버젼:
1.5

메소드의 개요
<V> ScheduledFuture <V>
schedule (Callable <V> callable, long delay, TimeUnit  unit)
          지정된 지연 후에 유효하게 되는 ScheduledFuture 를 작성해 실행합니다.
 ScheduledFuture <? > schedule (Runnable  command, long delay, TimeUnit  unit)
          지정된 지연 후에 유효하게 되는 단발적인 액션을 작성해 실행합니다.
 ScheduledFuture <? > scheduleAtFixedRate (Runnable  command, long initialDelay, long period, TimeUnit  unit)
          지정된 초기 지연의 경과후에 처음 유효하게 되어, 그 후는 지정된 기간 마다 유효하게 되는 정기적인 액션을 작성해 실행합니다.
 ScheduledFuture <? > scheduleWithFixedDelay (Runnable  command, long initialDelay, long delay, TimeUnit  unit)
          지정된 초기 지연의 경과후에 처음 유효하게 되어, 그 후는 실행의 종료후부터 다음의 개시까지의 지정의 지연 마다 유효하게 되는 정기적인 액션을 작성해 실행합니다.
 
인터페이스 java.util.concurrent. ExecutorService 로부터 상속된 메소드
awaitTermination , invokeAll , invokeAll , invokeAny , invokeAny , isShutdown , isTerminated , shutdown , shutdownNow , submit , submit , submit
 
인터페이스 java.util.concurrent. Executor 로부터 상속된 메소드
execute
 

메소드의 상세

schedule

ScheduledFuture <? > schedule(Runnable  command,
                            long delay,
                            TimeUnit  unit)
지정된 지연 후에 유효하게 되는 단발적인 액션을 작성해 실행합니다.

파라미터:
command - 실행하는 태스크
delay - 현재부터 지연 실행까지의 시간
unit - delay 파라미터의 시간 단위
반환값:
태스크의 보류 상태의 완료를 나타내는 ScheduledFuture. 그 get() 메소드는 완료시에 null 를 돌려준다
예외:
RejectedExecutionException - 태스크의 실행을 스케줄 할 수 없는 경우
NullPointerException - 커멘드가 null 의 경우

schedule

<V> ScheduledFuture <V> schedule(Callable <V> callable,
                                long delay,
                                TimeUnit  unit)
지정된 지연 후에 유효하게 되는 ScheduledFuture 를 작성해 실행합니다.

파라미터:
callable - 실행하는 함수
delay - 현재부터 지연 실행까지의 시간
unit - delay 파라미터의 시간 단위
반환값:
결과를 추출 또는 취소하기 위해서(때문에) 사용할 수 있는 ScheduledFuture
예외:
RejectedExecutionException - 태스크의 실행을 스케줄 할 수 없는 경우
NullPointerException - 호출 가능 레이아웃이 null 의 경우

scheduleAtFixedRate

ScheduledFuture <? > scheduleAtFixedRate(Runnable  command,
                                       long initialDelay,
                                       long period,
                                       TimeUnit  unit)
지정된 초기 지연의 경과후에 처음 유효하게 되어, 그 후는 지정된 기간 마다 유효하게 되는 정기적인 액션을 작성해 실행합니다. 즉 실행은 initialDelay 후에 개시되어 그 후는 initialDelay+period,initialDelay + 2 * period 와 같이 됩니다. 태스크를 실행해 예외가 발생하면(자), 이후의 실행은 억제됩니다. 그렇지 않은 경우는, executor 의 취소해 또는 종료에 의해서만 태스크는 종료합니다. 이 태스크를 실행하는데 지정의 기간 (period)보다 긴 시간이 걸리는 경우, 이후의 실행은 늦어 개시되는 일이 있습니다만, 병행해 실행은 되지 않습니다.

파라미터:
command - 실행하는 태스크
initialDelay - 최초의 지연 실행까지의 시간
period - 연속하는 실행의 간격
unit - initialDelay 및 period 파라미터의 시간 단위
반환값:
태스크의 보류 상태의 완료를 나타내는 ScheduledFuture. 그 get() 메소드는 취소해 때에 예외를 throw 한다
예외:
RejectedExecutionException - 태스크의 실행을 스케줄 할 수 없는 경우
NullPointerException - 커멘드가 null 의 경우
IllegalArgumentException - period 가 0 이하인 경우

scheduleWithFixedDelay

ScheduledFuture <? > scheduleWithFixedDelay(Runnable  command,
                                          long initialDelay,
                                          long delay,
                                          TimeUnit  unit)
지정된 초기 지연의 경과후에 처음 유효하게 되어, 그 후는 실행의 종료후부터 다음의 개시까지의 지정의 지연 마다 유효하게 되는 정기적인 액션을 작성해 실행합니다. 태스크를 실행해 예외가 발생하면(자), 이후의 실행은 억제됩니다. 그렇지 않은 경우는, executor 의 취소해 또는 종료에 의해서만 태스크는 종료합니다.

파라미터:
command - 실행하는 태스크
initialDelay - 최초의 지연 실행까지의 시간
delay - 실행의 종료후부터 다음의 개시까지의 지연
unit - initialDelay 및 delay 파라미터의 시간 단위
반환값:
태스크의 보류 상태의 완료를 나타내는 ScheduledFuture. 그 get() 메소드는 취소해 때에 예외를 throw 한다
예외:
RejectedExecutionException - 태스크의 실행을 스케줄 할 수 없는 경우
NullPointerException - 커멘드가 null 의 경우
IllegalArgumentException - delay 가 0 이하인 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.