Java中的定时器

注意:内容来自网络他人文章,特此声明

一.Java中的定时器

  在JAVA中实现定时器功能要用的2个重要类是

  • Timer类:定时器类,需要一个TimerTask类的实例作为参数;
  • TimerTask:定时器任务类,定时器要执行的任务在该类的run方法中定义。

二.实现定时器的两种写法

  1.普通实现(相对于通过内部类来实现而言)

 1 //先写一个类
 2 public class TimeTest {
 3 public static void main(String[] args) {
 4     
 5      Timer timer = new Timer();
 6      timer.schedule(new MyTask(),1000,2000);
 7 }
 8 
 9 //然后再写个类 
10 public class MyTask  extends TimerTask{
11 
12     @Override
13     public void run() {
14      System.out.println("开始运行");        
15     }
16 }

  2.通过内部类实现

  

 1 package com.lid;
 2 
 3 import java.util.Calendar;
 4 import java.util.Date;
 5 import java.util.Timer;
 6 import java.util.TimerTask;
 7 
 8 public class Test {
 9     public static void main(String[] args) {
10         //timer1();
11         timer2();
12         //timer3();
13         //timer4();
14     }
15 
16     // 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)
17     public static void timer1() {
18         Timer timer = new Timer();
19         timer.schedule(new TimerTask() {
20             public void run() {
21                 System.out.println("-------设定要指定任务--------");
22             }
23         }, 2000);// 设定指定的时间time,此处为2000毫秒
24     }
25 
26     // 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行
27     // schedule(TimerTask task, long delay, long period)
28     public static void timer2() {
29         Timer timer = new Timer();
30         timer.schedule(new TimerTask() {
31             public void run() {
32                 System.out.println("-------设定要指定任务--------");
33             }
34         }, 1000, 1000);
35     }
36 
37     // 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
38     // scheduleAtFixedRate(TimerTask task, long delay, long period)
39     public static void timer3() {
40         Timer timer = new Timer();
41         timer.scheduleAtFixedRate(new TimerTask() {
42             public void run() {
43                 System.out.println("-------设定要指定任务--------");
44             }
45         }, 1000, 2000);
46     }
47    
48     // 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.
49     // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
50     public static void timer4() {
51         Calendar calendar = Calendar.getInstance();
52         calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时
53         calendar.set(Calendar.MINUTE, 0);       // 控制分
54         calendar.set(Calendar.SECOND, 0);       // 控制秒
55 
56         Date time = calendar.getTime();         // 得出执行任务的时间,此处为今天的12:00:00
57 
58         Timer timer = new Timer();
59         timer.scheduleAtFixedRate(new TimerTask() {
60             public void run() {
61                 System.out.println("-------设定要指定任务--------");
62             }
63         }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
64     }
65 }
原文地址:https://www.cnblogs.com/tjudzj/p/4454513.html