JAVA

자바 TimerTask

illho 2023. 12. 21. 18:05

타이머는 자바 스레드처럼 일종의 스레드 클래스이다.

 

어떤 작업을 일정 시간마다 실행하기 위해서는 java.util.Timer 클래스와 java.util.TimerTask 클래스를 사용한다.

 

Timer 클래스 => Timer timer = new Timer()로 초기화해 사용.

 

Timer task = new TimerTask() { @Override }로 사용

@Override 아래에 정의된 run()메소드가 task로 실행된다.

 

.scheduleAtFixedRate() 메서드

 

scheduleAtFixedRate(TimerTask task, long delay, long period)

delay가 지난 후에 period 간격으로 task를 수행한다.

 

TimerTask를 활용한 소스 

public OutScanJobListSaveResult insertLoopTest(HttpServletRequest request) throws Exception{
		OutScanJobListSaveResult outScanJobListSaveResult = new OutScanJobListSaveResult();
        Timer timer = new Timer();
        long delay = 0;
        long period = 1000; // 1초마다 실행
        
        timer.scheduleAtFixedRate(new TimerTask() {
            private int count = 0;

            @Override
            public void run() {
                if (count < 10) {
                    // 1초에 한 번씩 실행할 코드
                    System.out.println("1초에 한 번씩 실행합니다. 횟수: " + (count + 1));
                    
                    outScanMapper.insertLoopTest(count);
                    count++;
                } else {
                    // 1000번 실행 후 타이머 종료
                    timer.cancel();
                }
            }
        }, delay, period);
		
        return outScanJobListSaveResult;