2019.01.21 배치처리

2019. 1. 22. 09:17JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.example;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
 
public class Test2 {
 
    public static void main(String[] args) {
        System.out.println("--- 프로그램 시작 ---");
        
        // 특정 날짜, 시각마다 반복된 작업 처리
        // -> 배치처리 (Batch Processing)
        
        // java.util.Timer, TimerTask 클래스
        // -> 날짜와 스레드 클래스 조합으로 구현됨.
        
        Timer timer = new Timer();
        
        // 이 메소드를 호출하는 시점부터 delay 지연시간 이후에
        // period 시간마다 task를 반복 처리
        // timer.scheduleAtFixedRate(task, delay, period);
        
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = sdf.parse("2019-01-21 12:38:00");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        // date 날짜시각부터 3초마다 task를 반복처리
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                System.out.println("콘솔 출력");
            }
        };
        
        timer.scheduleAtFixedRate(timerTask, date, 3000);
        
        // 호출시점부터 2초이후 1초마다 반복작업
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.out.println("콘솔 출력 2");
            }
        }, 20001000);
        
        // 60초(1분) 이후에 타이머 작업 종료
        try {
            Thread.sleep(1000*60);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        // timerTask.cancel(); // 특정 태스크만 종료
        // 타이머 태스크는 취소이후 재사용 불가능.
        // 새로운 타이머태스크 생성 후 스케줄 등록해서 사용해야함.
        
        timer.cancel(); // 타이머 종료
        // 타이머 객체를 종료시키면
        // 기 등록된 모든 TimerTask들도 함께 종료됨. 
        
        System.out.println("-- 프로그램 종료 --");
    } // main()
 
}
 
 
 
 
cs