定時器Timer
阿新 • • 發佈:2019-01-06
png eth err 移除 清空 import 進程 代碼 pub
Timer類的主要作用是設置任務計劃,但是封裝任務的類卻是TimerTask類
一、如何設置計劃任務
1、執行任務時間晚於當前時間-在未來執行的效果
任務代碼
1 package chapter06; 2 3 import java.util.Date; 4 import java.util.TimerTask; 5 6 public class MyTask extends TimerTask { 7 8 @Override 9 public void run() { 10 // TODO Auto-generated method stub11 System.out.println("任務執行了,時間為:"+new Date()); 12 } 13 14 }
執行代碼
1 package chapter06; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 7 public class Test1 { 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub11 System.out.println("當前時間:"+new Date()); 12 13 //獲取當前時間,並在當前時間的基礎上加上10秒 14 Calendar calendarRef = Calendar.getInstance(); 15 calendarRef.add(Calendar.SECOND, 10); 16 17 // 當前延遲之後的Date 18 Date runDate = calendarRef.getTime(); 19 2021 MyTask task = new MyTask();//任務 22 // 設置任務計劃 23 Timer timer = new Timer(); 24 timer.schedule(task, runDate); 25 } 26 27 }
2、在指定時間之後,按照指定時間間隔周期,無限循環執行某一個任務
1 package chapter06; 2 3 import java.util.Date; 4 import java.util.TimerTask; 5 6 public class MyTask extends TimerTask { 7 8 @Override 9 public void run() { 10 // TODO Auto-generated method stub 11 System.out.println("任務執行了,時間為:"+new Date()); 12 } 13 14 }
1 package chapter06; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 7 public class Test2 { 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 System.out.println("當前時間為:"+new Date()); 12 Calendar calendarRef = Calendar.getInstance(); 13 14 calendarRef.add(Calendar.SECOND, 10); 15 Date runDate = calendarRef.getTime(); 16 System.out.println("計劃時間為:"+runDate); 17 18 MyTask task = new MyTask(); 19 Timer timer = new Timer(); 20 21 timer.scheduleAtFixedRate(task, runDate, 4000); 22 } 23 24 }
二、TimerTask類的cancel()方法和Timer類的cancel()方法
TimerTask的cancel()方法的作用是將自身湊夠任務隊列中進行清除
Timer類的cancel()方法的作用是將任務隊列的任務全部清空
TimerTask類的calcel()方法例子
1 package chapter07; 2 3 import java.util.Date; 4 import java.util.TimerTask; 5 6 public class MyTaskA extends TimerTask { 7 8 @Override 9 public void run() { 10 // TODO Auto-generated method stub 11 System.out.println("A run time="+new Date()); 12 this.cancel(); 13 System.out.println("A任務自己移除了自己"); 14 } 15 16 }
1 package chapter07; 2 3 import java.util.Date; 4 import java.util.TimerTask; 5 6 public class MyTaskB extends TimerTask { 7 8 @Override 9 public void run() { 10 // TODO Auto-generated method stub 11 System.out.println("B run timer="+new Date()); 12 } 13 14 }
1 package chapter07; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 7 public class Test { 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 System.out.println("當前時間:"+new Date()); 12 13 //獲取當前時間,並在當前時間的基礎上加上10秒 14 Calendar calendarRef = Calendar.getInstance(); 15 calendarRef.add(Calendar.SECOND, 10); 16 17 // 當前延遲之後的Date 18 Date runDate = calendarRef.getTime(); 19 20 21 MyTaskA task1 = new MyTaskA();//任務A 22 MyTaskB task2 = new MyTaskB();//任務B 23 24 // 設置任務計劃 25 Timer timer = new Timer(); 26 27 timer.schedule(task1, runDate,4000); 28 timer.schedule(task2, runDate, 4000); 29 } 30 31 }
Timer類的calcel()方法例子
1 package chapter07; 2 3 import java.util.Date; 4 import java.util.TimerTask; 5 6 public class MyTaskB extends TimerTask { 7 8 @Override 9 public void run() { 10 // TODO Auto-generated method stub 11 System.out.println("B run timer="+new Date()); 12 } 13 14 }
1 package chapter07; 2 3 import java.util.Date; 4 import java.util.TimerTask; 5 6 public class MyTaskC extends TimerTask { 7 8 @Override 9 public void run() { 10 // TODO Auto-generated method stub 11 System.out.println("C run timer="+new Date()); 12 } 13 14 }
1 package chapter07; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 7 public class Test01 { 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 System.out.println("當前時間:"+new Date()); 12 13 //獲取當前時間,並在當前時間的基礎上加上10秒 14 Calendar calendarRef = Calendar.getInstance(); 15 calendarRef.add(Calendar.SECOND, 10); 16 17 // 當前延遲之後的Date 18 Date runDate = calendarRef.getTime(); 19 20 21 MyTaskB task1 = new MyTaskB();//任務B 22 MyTaskC task2 = new MyTaskC();//任務C 23 24 // 設置任務計劃 25 Timer timer = new Timer(); 26 27 timer.schedule(task1, runDate,4000); 28 timer.schedule(task2, runDate, 4000); 29 30 timer.cancel(); 31 } 32 33 }
全部任務被清除,並且進程被銷毀,按鈕由紅色變成灰色
定時器Timer