> 类库下载 > java类库 > Quartz 프레임워크는 작업 스케줄링을 구현합니다.

Quartz 프레임워크는 작업 스케줄링을 구현합니다.

高洛峰
풀어 주다: 2016-11-05 13:51:12
원래의
2303명이 탐색했습니다.

1. 태스크

Job: void 실행(JobExecutionContext 컨텍스트) 메소드가 하나만 있는 인터페이스입니다. 개발자는 실행 중인 태스크를 정의하기 위해 이 인터페이스를 구현합니다. JobExecutionContext 클래스는 스케줄링 컨텍스트에 대한 다양한 정보를 제공합니다. Job 런타임 정보는 JobDataMap 인스턴스에 저장됩니다.

2. Trigger

Trigger: Job 실행을 트리거하는 시간 트리거 규칙을 설명하는 클래스입니다. SimpleTrigger와 CronTrigger라는 두 가지 주요 하위 클래스가 있습니다. 한 번만 트리거하거나 고정된 시간 간격으로 실행해야 하는 경우 SimpleTrigger가 가장 적합한 선택이지만 CronTrigger는 Cron 표현식을 통해 매일 아침 9시, 월요일, 수요일, 금요일 오후 5시에 실행 등;

3. 스케줄러

JobDetail: Quartz는 Job을 실행할 때마다 Job 인스턴스를 다시 생성하므로 직접적으로 받아들이지 않습니다. 대신 Job 인스턴스는 Job 구현 클래스를 수신하므로 런타임에 newInstance()의 리플렉션 메커니즘을 통해 Job이 인스턴스화될 수 있습니다. 따라서 Job 구현 클래스를 설명하는 클래스가 필요하며 Job 이름, 설명, 관련 리스너 및 기타 정보와 같은 기타 관련 정적 정보가 이 역할을 맡습니다.

Quartz 작업 생성

1. 기획 엔터티 클래스

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

/**

*

*计划实体类

*/

 

public class Plan {

    private String date;

    private String task;

    public Plan(String date, String task) {

         

        this.date = date;

        this.task = task;

    }

    public Plan() {

         

    }

    @Override

    public String toString() {

        return "Plan [date=" + date + ", task=" + task + "]";

    }

    public String getDate() {

        return date;

    }

    public void setDate(String date) {

        this.date = date;

    }

    public String getTask() {

        return task;

    }

    public void setTask(String task) {

        this.task = task;

    }

}

로그인 후 복사

2. 알림 서비스 클래스

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

/**

 *

 * @提醒服务类

 *

 */

public class RemindService {

    //数据查询

    public List<Plan> getPlansForToday(){

        List<Plan> list=new ArrayList<Plan>();

        Plan p1=new Plan("2016-11-3","呵呵");

        Plan p2=new Plan("2016-11-4","嘿嘿");

        list.add(p1);

        list.add(p2);

        return list;

         

    }

    //提醒服务类

    public void ouputPlan(){

        List<Plan> forToday = getPlansForToday();

        for (Plan plan : forToday) {

            System.out.println("计划时间"+plan.getDate()+"计划内容"+plan.getTask());

        }

    }

}

로그인 후 복사

3. 🎜>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

/**

 *

 * @提醒任务类

 *

 */

public class RemindJob implements Job {

    private RemindService service=new RemindService();

     

    public void execute(JobExecutionContext arg0) throws JobExecutionException {

        service.getPlansForToday();

         

    }

    public RemindService getService() {

        return service;

    }

    public void setService(RemindService service) {

        this.service = service;

    }

}

로그인 후 복사
4. 타이머 작업 예약

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

public class TestJob {

    public static void doRemind() throws SchedulerException, InterruptedException{

        //创建一个任务

        JobDetail job =JobBuilder.newJob(RemindJob.class).withIdentity("job1", "group1").build();

        //创建一个触发器

         

        /*Trigger trigger = TriggerBuilder.newTrigger()

                .withIdentity(TriggerKey.triggerKey("myTrigger", "myTriggerGroup"))

                .withSchedule(SimpleScheduleBuilder.simpleSchedule()

                    .withIntervalInMilliseconds(2))

                .startAt(new Date(System.currentTimeMillis()+2000))

                .build();*/

        Trigger trigger=TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").

                withSchedule(CronScheduleBuilder.cronSchedule("0 34 16 ? * 5#1 2016")).build();

        SchedulerFactory s=new StdSchedulerFactory();

        Scheduler scheduler = s.getScheduler();

        //注册并进行调度

        scheduler.scheduleJob(job,trigger);

        //启动调度

        scheduler.start();

        //睡眠10s

        //Thread.sleep(10000);

        //关闭调度

        //scheduler.shutdown();

    }

        public static void main(String[] args) throws SchedulerException, InterruptedException {

            doRemind();

        }

}

로그인 후 복사
크론 표현

Quartz 프레임워크는 작업 스케줄링을 구현합니다.

Quartz 프레임워크는 작업 스케줄링을 구현합니다.

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿