1 回答

TA貢獻11條經驗 獲得超9個贊
你把task 定義為static就行了?? static? TimerTask task = new TimerTask(); 后面的new TimerDemo().task 都替換為task
static修飾后的成員,在編譯時由內存分配一塊內存空間,直到程序停止運行才會釋放,那么就是說該類的所有對象都會共享這塊內存空間
代碼:
package day09;
import java.util.Timer;
import java.util.TimerTask;
//定時器演示
public class TimerDemo extends Timer {
?? ?// 第一個定時任務---定義在main方法外,用task引用來指向該匿名類實例對象
?? ?static TimerTask task = new TimerTask() {
?? ??? ?@Override
?? ??? ?public void run() {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?System.out.println("my task run");
?? ??? ?}
?? ?};
?? ?public static void main(String[] args) {
?? ??? ?// 定時器
?? ??? ?final Timer timer = new Timer();
?? ??? ?// 將定時任務交給定時器時回調執行
?? ??? ?timer.schedule(task, 1000, 1000);
?? ??? ?// 第二個任務,還是用之前的task引用來指向該匿名類實例對象
?? ??? ?task = new TimerTask() {
?? ??? ??? ?@Override
?? ??? ??? ?public void run() {
?? ??? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ??? ?timer.cancel();
?? ??? ??? ?}
?? ??? ?};
?? ??? ?// 十秒后停止
?? ??? ?timer.schedule(task, 10000);
?? ?}
}
添加回答
舉報