-
11111
查看全部 -
任務(wù)執(zhí)行時間超出執(zhí)行周期間隔
查看全部 -
任務(wù)執(zhí)行時間超出執(zhí)行周期間隔
查看全部 -
public class ScheduleAtFixedRateTest {
public static void main(String[] args) {
//規(guī)定時間格式
final SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//獲取當(dāng)前的具體時間
Calendar calendar = Calendar.getInstance();
System.out.println("Current time is: " + sf.format(calendar.getTime()));
//設(shè)置成6秒前的時間,若當(dāng)前時間為2018-3-17 16:03:30,那么設(shè)置之后時間變成2018-3-17 16:03:24
calendar.add(Calendar.SECOND, -6);
Timer timer = new Timer();
//第一次執(zhí)行時間為6秒前,之后每隔兩秒執(zhí)行一次
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
//打印當(dāng)前的計劃執(zhí)行時間
System.out.println("Scheduled exec time is: " + sf.format(scheduledExecutionTime()));
System.out.println("task is being executed!");
}
}, calendar.getTime(), 2000);
}
}
查看全部 -
首次計劃執(zhí)行時間早于當(dāng)前時間
查看全部 -
首次計劃執(zhí)行時間早于當(dāng)前時間
查看全部 -
scheduleAtFixedRate:下次開始執(zhí)行的時間以上次run方法開始時間為基準(zhǔn)。
查看全部 -
schedule:下次開始執(zhí)行的時間以上次run方法完成時間為基準(zhǔn)。
查看全部 -
scheduleAtFixedRate:同樣時間回到過去,但是開始執(zhí)行多次到達(dá)正常時間,然后間隔時間輸出。
查看全部 -
schedule:時間回到過去,但是開始執(zhí)行時以一次到達(dá)正常時間,然后間隔時間輸出。
查看全部 -
Timer 的缺陷:
???? 1 并發(fā)操作時的缺陷,這是因為 Timer 的后臺只有一個執(zhí)行線程導(dǎo)致的。
???? 2 當(dāng)任務(wù)拋出異常時的缺陷。如果 TimeTask 拋出 RuntimeException,Timer 會停止所有任務(wù)的執(zhí)行。
根據(jù)缺陷,我們可以得出 Timer 的使用禁區(qū)。
????1 對時效性要求較高的多任務(wù)并發(fā)作業(yè),雖然 Timer 支持多任務(wù)執(zhí)行,但那都是串行執(zhí)行的。
????2 對復(fù)雜的任務(wù)的調(diào)度,因為在復(fù)雜的任務(wù)中可能會出現(xiàn)異常,而Timer 中一旦出現(xiàn)異常,則停止執(zhí)行。
查看全部 -
Timer定義:有且僅有一個一個后臺線程對多個業(yè)務(wù)線程進(jìn)行定時定頻率的調(diào)度。
Timer 組件: Timer 主體類和 TimeTask 實現(xiàn)類。
Timer 中包含一個 Time Task 的隊列 和 一個 TimeThread 后臺線程。
查看全部 -
1.管理并發(fā)任務(wù)的缺陷:
每次有且僅有一個線程去執(zhí)行定時任務(wù),如存在多任務(wù)會導(dǎo)致任務(wù)時間過長(串行)
2.當(dāng)任務(wù)拋出異常時的缺陷:
當(dāng)拋出RuntimeException(如果不捕捉異常),會停止所有任務(wù)
3.在以下情況禁止使用
對時效性要求較高的多任務(wù)并發(fā)作業(yè)
對復(fù)雜的任務(wù)的調(diào)度
查看全部 -
使用禁區(qū)。
查看全部 -
缺陷2.。
查看全部
舉報