JavaタイミングタスクQuartz(一)——初認識

5621 ワード

1前に書いてください
最近の会社の業務はタイミングタスクが必要です。フレームの選定にはQuartzが使われています。ここで学習記録を作ります。
2 Quartzの主要メンバー
Quartzの核心は三つのインターフェースからなります。それぞれJob、Trigger、Schdulerです。
2.1 Job
具体的なタスクの実行について説明しますが、その構造はRunnableと似ています。一つのvoidタイプの方法しかありません。 execute(JobExecution Contect context)は、もう一つのサブクラスがあります。  Interruptable Jobは、終了可能なタスクを表します。
2.1.1 Interruptable Job 
Jobベースではvoidタイプのみを追加しました。 interrupt()はタスクを終了するための呼び出しが発生しました。 QuartzScheduler葃shutdownにおいて、これは私達に対して終止可能なRunnableを書くように編纂する必要があります。 executeメソッドです
2.2 Trigger
Jobを記述するためのものです。 executeメソッドはいつ実行しますか?
2.3 Scheduler
キューとスレッドプールのように、各種Jobの情報とTrigger、管理タスクの追加、削除、置換、運転などを保存します。
3 Quartzの初歩使用
Scheduler:管理タスクの容器として、Schedulerはスレッドプールと同様の提出タスクとクローズプールの方法があるべきです。対応する追加タスクの方法はそれぞれ  addJob, scheduleJob、あいにくこれらの方法の署名は JobDetail;
JobDetail:JobDetailにはJobDetailImplがあります。そして、空のコンストラクタはname、class、groupを指定しなければならないと表しています。classとはJobのことです インターフェースの実現;グループはオプションで、デフォルトではdefaultを使用します。
Trigger:Triggerには複数の実現類があります。ここでは基本的な実現にのみ関連します。 SimpleTriggerImpl
上記の三つのインターフェースには対応する建築類や工場類があります。
3.1通常のタイミングタスク
 1 /**
 2  * @author pancc
 3  * @version 1.0
 4  */
 5 public class SimpleJobDemo {
 6     public static void main(String[] args) throws SchedulerException, InterruptedException {
 7         JobDetail detail = JobBuilder.newJob(SimpleJob.class)
 8                 .withIdentity("simple", "group0")
 9                 .build();
10 
11         Trigger trigger = TriggerBuilder.newTrigger()
12                 .withIdentity("simple_trigger")
13                 .startNow()
14                 .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(2))
15                 .build();
16 
17         Scheduler scheduler = new StdSchedulerFactory().getScheduler();
18 
19         scheduler.start();
20         scheduler.scheduleJob(detail, trigger);
21         /*
22          * 10      
23          */
24         Thread.sleep(10_000);
25         scheduler.shutdown();
26     }
27 
28     public static class SimpleJob implements Job {
29         @Override
30         public void execute(JobExecutionContext context) {
31             System.out.printf("now date: %s", new Date());
32         }
33     }
34 
35 }
 
上のコードは現在のジョブを印刷するジョブを作成し、その実行開始時間を提出時として指定し、サイクルは2秒とし、永続的です。10秒後に容器を閉じます。
4タスク作成中のピット
必要な属性:JobDetailには説明名が必要です。グループは未設定の時にdefaultを使用します。
アクセス可能性:一般的なコードの中で、私たちは上のようなアクセスを制限する習慣があります。 SimpleJobはprvateを定義するかもしれません。これはQuartzでは許されません。Jobの空のコンストラクタはpubilcでなければなりません。 Quartzの特性は関係があります。