1. 개념
시간 정기 예약 작업 기능은 주로 처리를 위해 내부적으로 멀티 스레딩을 사용하는 Java의 타이머 객체를 사용하므로 여전히 멀티 스레딩 기술과 매우 관련이 있습니다. JDK에서 타이머 클래스는 주로 계획 작업의 기능, 즉 지정된 시간에 특정 작업을 실행하기 시작하지만 작업을 캡슐화하는 클래스는 Timertask 클래스입니다.
Timertask 클래스를 상속하고 run () 메소드를 구현하여 실행할 작업을 사용자 정의하십시오.
Public Class MyTask는 Timertask {@override public void run () {dateformat dateformat = timeutil.df.get (); System.out.println ( "내 작업이 실행 중입니다" + dateformat.format (new Date ()); }}타이머를 실행하여 실행 시간에 작업을 실행하십시오 (Timertask Task, Date Time) :
공개 클래스 실행 {개인 정적 타이머 타이머 = new Timer (); public static void main (String [] args)은 parseexception {timer.schedule (new mytask (), timeutil.df.get (). parse ( "2017-09-14 09:19:30"); }}참고 : 시간 변환 도구 클래스는 스레드 안전을 보장합니다.
public class timeUtil {public static final strook <dateformat> df = new ThreadLocal <날짜 format> () {@override protected dateformat initialvalue () {return new simpledateformat ( "yyyy-mm-dd hh : mm : ss"); }};} 2. 타이머 클래스 예방 조치
1. 타이머 객체를 만드는 것은 새 스레드가 시작되었음을 의미하지만 새로 시작된 스레드는 데몬 스레드가 아닙니다. 백그라운드에서 실행 중입니다. 새로 시작된 타이머 스레드는 다음을 통해 데몬 스레드로 설정할 수 있습니다.
개인 정적 타이머 타이머 = 새 타이머 (True);
2. 미리 : 계획된 시간이 현재 시간보다 이르면 작업이 즉시 실행됩니다.
3. 지연 : TimertASK는 대기열에서 하나씩 실행되므로 이전 작업이 오랜 시간이 걸리고 후속 작업의 실행 시간이 지연되기 때문에 예상 시간과 일치하지 않을 수 있습니다. 지연된 작업의 특정 시작 시간은 이전 작업의 "종료 시간"을 기반으로합니다.
4. 주기적 조작 : Timer.Schedule (Timertask 작업, 날짜 초기, 장기) 처음부터 작업은 1 밀리 초마다 실행됩니다.
5. 일정 (Timertask Task, Long Delay) 현재 시간은 참조 시간입니다. 이 시간에 밀리 초의 설정된 수를 지연시킨 후에 타이머스크 작업이 실행됩니다.
6. 일정 (타이머스크 작업, 긴 지연, 장기) 현재 시간은 참조 시간입니다. 이를 바탕으로 밀리 초의 정해진 수를 지연시킨 다음 특정 간격으로 무한대로 작업을 실행하십시오.
7. Timer 's Cancel ()와 Timertask's Cancel ()의 차이점은 무엇입니까?
앞에서 언급 한 작업의 실행은 열 형태로 하나씩 실행됩니다. Timertask.cancel ()은 작업대에서 현재 작업을 취소하는 것을 나타냅니다. timer.cancel ()의 값은 현재 작업 큐의 모든 작업을 취소하는 것입니다. 타이머의 cance ()가 때때로 계획된 작업 실행을 중단하지는 않지만 정상적으로 실행한다는 점 은 주목할 가치가 있습니다 . 이는 타이머 클래스의 CANCEL () 메소드가 때때로 큐 잠금에 대해 경쟁하지 않기 때문에 TimerTask 클래스의 작업이 정상적으로 계속 실행되기 때문입니다.
3. ScheduleAtfixEdrate (Timertask 작업, 날짜 최초, 장기) 및 일정 (Timertask 작업, 날짜 초기, 장기)의 차이
유사성 :
1. 메소드 일정과 메소드 스케줄링 픽시드 드레이트가 순서대로 실행되므로 스레드가 아닌 안전 상황이 필요하지 않습니다.
2. 방법 스케줄 및 메소드 스케줄링 픽시드 레이트 작업 실행 시간이 지연되지 않으면 다음 작업의 실행 시간은 이전 작업의 "시작"에서 시간을 기준으로 계산됩니다.
3. 방법 스케줄 및 메소드 스케줄링 픽스 드레이트 작업 실행 시간이 지연되면 다음 작업의 실행 시간은 마지막 작업의 끝에서 시간을 참조하여 계산됩니다.
차이점 :
기본적으로 메소드 스케줄과 사용중인 메소드 스케줄 리이트 픽시드 레이트, 즉 ScheduLeatFixEdrate에는 캐치 업 실행이 있습니다. 무슨 뜻입니까? 즉,주기적인 작업 중에 작업이 중단되면 ScheduLeatFixEdrate는 이전에 삭제 된 작업을 채우려 고합니다. 그리고 일정이 무시되고 다음 작업을 실행합니다. 이 블로그를 참조 할 수 있으며,이 블로그는 생생하게 작성됩니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.