线程实现定时任务(转载)
1 package dingshirenwu; 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 test4(); 11 } 12 // 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time) 13 public static void test1() { 14 Timer timer = new Timer(); 15 timer.schedule(new TimerTask() { 16 public void run() { 17 System.out.println("-------延时5秒钟后执行的任务--------"); 18 } 19 }, 5000);// 设定指定的时间time,此处设置为5000毫秒 20 } 21 22 // 第二种方法:设定指定任务task在五秒后执行,每隔1秒执行一次 23 // schedule(TimerTask task, long delay, long period) 24 public static void test2() { 25 Timer timer = new Timer(); 26 timer.schedule(new TimerTask() { 27 public void run() { 28 System.out.println("------五秒后执行的任务,每隔一秒执行一次--------"); 29 } 30 }, 5000, 1000); 31 } 32 33 // 第三种方法:设定指定任务task在五秒后执行,每隔2秒执行一次 34 // scheduleAtFixedRate(TimerTask task, long delay, long period) 35 public static void test3() { 36 Timer timer = new Timer(); 37 timer.scheduleAtFixedRate(new TimerTask() { 38 public void run() { 39 System.out.println("-------五秒后执行的任务,每隔两秒执行一次--------"); 40 } 41 }, 5000, 2000); 42 } 43 44 // 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行. 45 // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period) 46 public static void test4() { 47 Calendar calendar = Calendar.getInstance(); 48 calendar.set(Calendar.HOUR_OF_DAY, 18); // 控制时 49 calendar.set(Calendar.MINUTE, 0); // 控制分 50 calendar.set(Calendar.SECOND, 0); // 控制秒 51 Date time = calendar.getTime(); // 得出执行任务的时间,此处为今天的18:00:00 52 Timer timer = new Timer(); 53 timer.scheduleAtFixedRate(new TimerTask() { 54 public void run() { 55 System.out.println("-------这是每天18点执行的任务--------"); 56 } 57 }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行 58 } 59 }