02.
傳統定時器技術回顧
傳統定時器的建立:直接使用定時器類timer【輕鬆實現定時關機或者過多長時間關機】
a、過多長時間後炸
new timer().schedule(timertask定時任務, date time定的時間);
b、過多長時間後炸,以後每隔多少時間再炸
newtimer().schedule(timertask定時任務, long延遲(第一次執行)時間, long間隔時間);
timertask與runnable類似,有乙個run方法
timer是定時器物件,到時間後會觸發炸彈(timertask)物件
問題:2秒後炸,**後每隔3秒再炸一次
定時器2秒後炸,炸彈裡還有定時器(每3秒炸一次)
問題延伸:
上面的問題延伸,母彈炸過後,子彈每隔3秒炸一次,再每隔8秒炸一次
1、在mytimertask內部定義乙個靜態變數記錄炸彈號,在run方法內將炸彈號加1,每次產生新炸彈,號碼就會加1,根據炸彈號判斷是3秒炸還是8秒炸。
注意:內部類中不能宣告靜態變數
定義乙個靜態變數private static count = 0;
在run方法內部:count=(count+1)%2;
將定時器的時間設定為:2000+2000*count
2、用兩個炸彈來完成,a炸彈炸完後啟動定時器安裝b炸彈,b炸彈炸完後也啟動乙個定時器安裝a炸彈。
定時器還可以設定具體時間,如某年某月某日某時……可以設定周一到周五做某事,自己設定的話需要換算日期時間,可以使用開源工具quartz來完成。
或者參見:
public class traditionaltimertest
}, 10000,3000);*/
class mytimertask extends timertask
}*/new mytimertask(),2000+2000*count);
}}
new timer().schedule(new mytimertask(), 2000);
while(true) catch (interruptedexception e)
} }}
java併發 傳統執行緒技術中的定時器技術
傳統執行緒技術中有個定時器,定時器的類是timer,我們使用定時器的目的就是給它安排任務,讓它在指定的時間完成任務。所以先來看一下timer類中的方法 主要看常用的timertask 方法 返回值方法名 方法描述 void schedule timertask task,long delay 安排在...
java併發程式設計(1) 傳統多執行緒技術
1.傳統兩種方式實現執行緒 package com.qunar.thread public class traditionalthread catch interruptedexception e system.out.println thread.currentthread getname sys...
JAVA併發程式設計(二)
一.可見性 讀操作能實時的看到寫操作最新寫入的值。在單執行緒中,讀操作總能得到寫操作寫入的值 但在多執行緒中,如果讀操作跟寫操作在不同的執行緒中執行,那麼讀操作將不一定能適時的看到其他執行緒寫入的值。二.重排序 在沒有使用同步的情況下,編譯器 處理器 執行時都有可能做操作的執行順序進行一些調整。三....