Java定时器Timer

Java定时器Timer

public static void main(String[] args) {
   // 5秒之后 每1秒执行一次
   Timer timer1 = new Timer();
   timer1.schedule(new TimerTask() {
       @Override
       public void run() {
           System.out.println("hello11111");
       }
   }, 5000, 1000);

   //  5秒之后 执行一次
   Timer timer2 = new Timer();
   timer2.schedule(new TimerTask() {
       @Override
       public void run() {
           System.out.println("hello22222");
       }
   },5000);

   //  当前时间执行一次 然后每5秒执行一次
   Timer timer3 = new Timer();
   timer3.schedule(new TimerTask() {
       @Override
       public void run() {
           System.out.println("hello33333");
       }
   },new Date(),5000);
}

// 指定时间执行
   @Test
   public void testTimer() throws Exception {
       SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       String end = "2019-06-14 15:15:00";
       //开启任务
       Timer timer = new Timer();
       timer.schedule(new TimerTask() {
                          @Override
                          public void run() {
                              for (int i = 0; i < 5; i++) {
                                  System.out.println(i);
                              }
                          }

                      }, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(end)
       );
       System.out.println();
       //timer.cancel(); // 取消队列任务
       //timer.purge();  // 方法调用返回从队列中删除的任务数。
       timer.schedule(new TimerTask() {
                          @Override
                          public void run() {
                              for (int i = 6; i < 10; i++) {
                                  System.out.println(i);
                              }
                          }

                      }, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(end)
       );
   }

注:Timer有个坑的地方,假如有两个Timer在同某时刻同时执行,这个顺序是保证不了的,解决办法就是,不要用俩Timer,就用一个,这样的话虽然是同一时间执行,但是谁在上面谁就先执行。。。

发表评论