|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.Timer
public class Timer
백그라운드 thread로 장래 실행되는 태스크를 스케줄 하는, thread를 위한 기능입니다. 태스크는, 1 회만, 또는 정기적으로 반복해 실행되도록(듯이) 스케줄 됩니다.
각 Timer 객체와 대응하는 것은, 타이머의 태스크를 모두 연속해 실행하기 위해서 사용되는, 단일의 백그라운드 thread입니다. 타이머 태스크는 신속히 실행될 필요가 있습니다. 타이머 태스크의 완료에 시간이 너무 걸리면(자), 타이머의 태스크 실행 thread가 「점유」됩니다. 이것에 의해 후속의 태스크의 실행이 늦어 위반한 태스크의 완료시 (완료했을 경우)에, 연달아 「정리하며」실행되게 됩니다.
Timer 객체의 마지막 라이브 참조가 종료해, 미처리의 태스크가 모두 실행되면(자), 타이머의 태스크 실행 thread도 동시에 완료해, 가베지 컬렉트됩니다. 다만, 이것에는 한없고 긴 시간이 걸리는 경우가 있습니다. 디폴트에서는, 태스크의 실행 thread는 「demon thread」로서는 실행되지 않기 때문에, 어플리케이션이 종료하지 않게 할 수 있습니다. 타이머의 태스크 실행 thread를 즉시 완료시키는 경우, 호출측은 타이머의 cancel 메소드를 호출할 필요가 있습니다.
stop 메소드의 호출등에 의해 타이머의 태스크 실행 thread가 예상외의 시간에 종료했을 경우, 타이머의 태스크를 스케줄 하려고 하면(자), 타이머의 cancel 메소드가 불려 갔을 경우와 같게,IllegalStateException 가 발생합니다.
이 클래스는 thread 세이프입니다. 외부의 동기화를 실시하지 않아도, 복수의 thread로 단일의 Timer 객체를 공유할 수 있습니다.
이 클래스에서는, 리얼타임은 보증되지 않습니다. Object.wait(long) 메소드를 사용해, 태스크가 스케줄 됩니다.
구현상의 주의:이 클래스는, 병행해 스케줄 된 다수의 태스크를 슬캘링 합니다 (수천에서도 문제는 없다). 태스크 큐를 나타내기 위해서(때문에) 바이너리 heap가 내부적으로 사용되기 (위해)때문에, 태스크를 스케줄 하는 코스트는 O(log n)가 됩니다. n 는, 병행해 스케줄 된 태스크의 수입니다.
구현상의 주의:모든 생성자 은 타이머 thread를 개시합니다.
TimerTask
,
Object.wait(long)
생성자 의 개요 | |
---|---|
Timer ()
새로운 타이머를 작성합니다. |
|
Timer (boolean isDaemon)
demon로서 실행되도록(듯이) 지정할 수 있는 관련 thread를 가지는, 새로운 타이머가 작성됩니다. |
|
Timer (String name)
지정된 이름의 관련하는 thread를 가지는 새로운 타이머가 작성됩니다. |
|
Timer (String name,
boolean isDaemon)
지정된 이름의 관련하는 thread를 가지는 새로운 타이머가 작성됩니다. |
메소드의 개요 | |
---|---|
void |
cancel ()
현재 스케줄 되고 있는 태스크를 파기해, 이 타이머를 종료합니다. |
int |
purge ()
삭제된 모든 태스크를, 이 타이머의 태스크 큐로부터 삭제합니다. |
void |
schedule (TimerTask task,
Date time)
지정한 시간으로 지정한 태스크가 실행되도록(듯이) 스케줄 합니다. |
void |
schedule (TimerTask task,
Date firstTime,
long period)
지정한 태스크가, 지정한 시간에 개시되어 「고정 지연 실행」을 반복하도록(듯이) 스케줄 합니다. |
void |
schedule (TimerTask task,
long delay)
지정한 지연의 후에, 지정한 태스크가 실행되도록(듯이) 스케줄 합니다. |
void |
schedule (TimerTask task,
long delay,
long period)
지정한 태스크가, 지정한 지연의 후에 개시되어 「고정 지연 실행」을 반복하도록(듯이) 스케줄 합니다. |
void |
scheduleAtFixedRate (TimerTask task,
Date firstTime,
long period)
지정한 태스크가, 지정한 시간에 개시되어 「고정 빈도 실행」을 반복하도록(듯이) 스케줄 합니다. |
void |
scheduleAtFixedRate (TimerTask task,
long delay,
long period)
지정한 태스크가, 지정한 지연의 후에 개시되어 「고정 빈도 실행」을 반복하도록(듯이) 스케줄 합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
생성자 의 상세 |
---|
public Timer()
Thread
,
cancel()
public Timer(boolean isDaemon)
isDaemon
- 관련하는 thread가 demon로서 실행되는 경우는 trueThread
,
cancel()
public Timer(String name)
name
- 관련하는 thread의 이름
NullPointerException
- 이름이 null 의 경우Thread.getName()
,
Thread.isDaemon()
public Timer(String name, boolean isDaemon)
name
- 관련하는 thread의 이름isDaemon
- 관련하는 thread가 demon로서 실행되는 경우는 true
NullPointerException
- 이름이 null 의 경우Thread.getName()
,
Thread.isDaemon()
메소드의 상세 |
---|
public void schedule(TimerTask task, long delay)
task
- 스케줄 되는 태스크delay
- 태스크가 실행되기 전의 밀리 세컨드 단위의 지연
IllegalArgumentException
- delay 가 부의 경우, 또는 delay + System.currentTimeMillis() 가 부의 경우
IllegalStateException
- 태스크가 벌써 스케줄 되었는지 삭제되었을 경우, 또는 타이머가 삭제되었을 경우public void schedule(TimerTask task, Date time)
task
- 스케줄 되는 태스크time
- 태스크가 실행되는 시간
IllegalArgumentException
- time.getTime() 가 0 보다 작은 값의 경우
IllegalStateException
- 태스크가 벌써 스케줄 되었는지 삭제되었을 경우, 타이머가 삭제되었을 경우, 또는 타이머 thread가 종료했을 경우public void schedule(TimerTask task, long delay, long period)
고정 지연 실행에서는, 전의 실행의 실제의 실행 시간을 기준으로 해 각각의 실행이 스케줄 됩니다. 어떠한 이유로써 실행이 지연 했을 경우 (가베지 컬렉션, 그 외의 백그라운드 작업 등), 그 후의 실행도 지연 됩니다. 최종적으로, 실행의 빈도는 일반적으로, 지정한 기간의 대응하는 빈도보다 약간 늦어집니다 (기본이 되는 Object.wait(long) 를 지지하고 있는 시스템 클록이 정확이라고 하는 전제로).
고정 지연 실행은, 「원활함」을 필요로 하는 작업의 반복에 적절하고 있습니다. 즉, 장시간의 실행보다 단시간의 실행으로 빈도의 정확함을 유지할 필요가 있는 작업에 적절하고 있습니다. 이것에는, 일정한 간격으로 커서를 점멸시키는 등, 대부분의 애니메이션 태스크가 포함됩니다. 또, 키가 밀리고 있는 동안은 문자를 자동적으로 반복하는 등, 사용자의 입력에 응해 일정한 활동이 실행되는 태스크도 포함됩니다.
task
- 스케줄 되는 태스크delay
- 태스크가 실행되기 전의 밀리 세컨드 단위의 지연period
- 연속하는 태스크 실행의 밀리 세컨드 단위의 시간
IllegalArgumentException
- delay 가 부의 경우, 또는 delay + System.currentTimeMillis() 가 부의 경우
IllegalStateException
- 태스크가 벌써 스케줄 되었는지 삭제되었을 경우, 타이머가 삭제되었을 경우, 또는 타이머 thread가 종료했을 경우public void schedule(TimerTask task, Date firstTime, long period)
고정 지연 실행에서는, 전의 실행의 실제의 실행 시간을 기준으로 해 각각의 실행이 스케줄 됩니다. 어떠한 이유로써 실행이 지연 했을 경우 (가베지 컬렉션, 그 외의 백그라운드 작업 등), 그 후의 실행도 지연 됩니다. 최종적으로, 실행의 빈도는 일반적으로, 지정한 기간의 대응하는 빈도보다 약간 늦어집니다 (기본이 되는 Object.wait(long) 를 지지하고 있는 시스템 클록이 정확이라고 하는 전제로).
고정 지연 실행은, 「원활함」을 필요로 하는 작업의 반복에 적절하고 있습니다. 즉, 장시간의 실행보다 단시간의 실행으로 빈도의 정확함을 유지할 필요가 있는 작업에 적절하고 있습니다. 이것에는, 일정한 간격으로 커서를 점멸시키는 등, 대부분의 애니메이션 태스크가 포함됩니다. 또, 키가 밀리고 있는 동안은 문자를 자동적으로 반복하는 등, 사용자의 입력에 응해 일정한 활동이 실행되는 태스크도 포함됩니다.
task
- 스케줄 되는 태스크firstTime
- 태스크가 실행되는 최초의 시간period
- 연속하는 태스크 실행의 밀리 세컨드 단위의 시간
IllegalArgumentException
- time.getTime() 가 0 보다 작은 값의 경우
IllegalStateException
- 태스크가 벌써 스케줄 되었는지 삭제되었을 경우, 타이머가 삭제되었을 경우, 또는 타이머 thread가 종료했을 경우public void scheduleAtFixedRate(TimerTask task, long delay, long period)
고정 빈도 실행에서는, 최초의 실행의 스케줄 된 실행 시간을 기준으로 해 각각의 실행이 스케줄 됩니다. 어떠한 이유로써 실행이 지연 했을 경우 (가베지 컬렉션 또는 그 외의 백그라운드 작업 등), 「지연을 되찾는다」위해(때문에) 2 개(살) 이상의 실행이 연속해 행해집니다. 최종적으로 실행의 빈도는, 지정한 기간의 대응하는 빈도와 같게 됩니다 (기본이 되는 Object.wait(long) 를 지지하고 있는 시스템 클록이 정확이라고 하는 전제로).
고정 빈도 실행은, 1 시간 마다에 차임을 울리거나 특정의 시간에 매일 스케줄 된 보수를 실행하는 등, 「절대」시간을 반영하는 작업을 반복하는데 적합합니다. 또, 10 초 마다 새겨지는 카운트다운 타이머 등, 정해진 수의 실행의 합계 시간이 중요한 작업을 반복하는데도 적합합니다. 게다가 고정 빈도 실행은, 서로 동기화를 보관 유지할 필요가 있는 복수의 반복 타이머 태스크를 스케줄 하는데도 적합합니다.
task
- 스케줄 되는 태스크delay
- 태스크가 실행되기 전의 밀리 세컨드 단위의 지연period
- 연속하는 태스크 실행의 밀리 세컨드 단위의 시간
IllegalArgumentException
- delay 가 부의 경우, 또는 delay + System.currentTimeMillis() 가 부의 경우
IllegalStateException
- 태스크가 벌써 스케줄 되었는지 삭제되었을 경우, 타이머가 삭제되었을 경우, 또는 타이머 thread가 종료했을 경우public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
고정 빈도 실행에서는, 최초의 실행의 스케줄 된 실행 시간을 기준으로 해 각각의 실행이 스케줄 됩니다. 어떠한 이유로써 실행이 지연 했을 경우 (가베지 컬렉션 또는 그 외의 백그라운드 작업 등), 「지연을 되찾는다」위해(때문에) 2 개(살) 이상의 실행이 연속해 행해집니다. 최종적으로 실행의 빈도는, 지정한 기간의 대응하는 빈도와 같게 됩니다 (기본이 되는 Object.wait(long) 를 지지하고 있는 시스템 클록이 정확이라고 하는 전제로).
고정 빈도 실행은, 1 시간 마다에 차임을 울리거나 특정의 시간에 매일 스케줄 된 보수를 실행하는 등, 「절대」시간을 반영하는 작업을 반복하는데 적합합니다. 또, 10 초 마다 새겨지는 카운트다운 타이머 등, 정해진 수의 실행의 합계 시간이 중요한 작업을 반복하는데도 적합합니다. 게다가 고정 빈도 실행은, 서로 동기화를 보관 유지할 필요가 있는 복수의 반복 타이머 태스크를 스케줄 하는데도 적합합니다.
task
- 스케줄 되는 태스크firstTime
- 태스크가 실행되는 최초의 시간period
- 연속하는 태스크 실행의 밀리 세컨드 단위의 시간
IllegalArgumentException
- time.getTime() 가 0 보다 작은 값의 경우
IllegalStateException
- 태스크가 벌써 스케줄 되었는지 삭제되었을 경우, 타이머가 삭제되었을 경우, 또는 타이머 thread가 종료했을 경우public void cancel()
이 타이머에 의해 불려 간 타이머 태스크의 실행 메소드로부터 이 메소드를 호출하면(자), 진행중의 태스크 실행은, 이 타이머에 실행되는 마지막 태스크 실행이 됩니다.
이 메소드는, 반복해 불려 갑니다. 2 번째 이후의 호출에는, 효과는 없습니다.
public int purge()
대부분의 프로그램은, 이 메소드를 호출할 필요는 없습니다. 이것은, 다수의 태스크를 취소하는, 보기 드문 어플리케이션용으로서 설계되고 있습니다. 이 메소드를 호출하면(자), 처리 시간부터 메모리 효율이 우선되기 (위해)때문에, 메소드의 런타임이 n + c log n 에 비례하는 경우가 있습니다. 여기서, n 는 큐내의 태스크의 수, c 는 삭제된 태스크의 수를 나타냅니다.
이 타이머에 스케줄 된 태스크내로부터, 이 메소드를 호출할 수가 있습니다.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.