在Java中,java.util.Timer
是一個(gè)用于安排任務(wù)的類。java.util.TimerTask
是一個(gè)抽象類,用于定義要執(zhí)行的任務(wù)。通過將TimerTask
實(shí)例傳遞給Timer
的schedule()
方法,可以安排任務(wù)的執(zhí)行。
TimerTask
的cancel()
方法用于取消任務(wù)的執(zhí)行。當(dāng)調(diào)用cancel()
方法時(shí),任務(wù)將被標(biāo)記為已取消,并且不會(huì)再執(zhí)行。
如果在TimerTask
的run()
方法中調(diào)用了cancel()
方法,則任務(wù)將在下一次計(jì)劃執(zhí)行之前被取消。如果任務(wù)已經(jīng)在執(zhí)行中,調(diào)用cancel()
方法將不會(huì)立即停止任務(wù)的執(zhí)行,但下一次計(jì)劃執(zhí)行時(shí)將不再執(zhí)行該任務(wù)。
需要注意的是,TimerTask
的cancel()
方法只會(huì)取消當(dāng)前任務(wù)的執(zhí)行,不會(huì)取消定時(shí)器本身。如果需要取消定時(shí)器中的所有任務(wù),可以調(diào)用Timer
的cancel()
方法。
以下是一個(gè)示例代碼,演示了如何使用Timer
和TimerTask
來安排任務(wù)的執(zhí)行并取消任務(wù):
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task is executing...");
// 取消任務(wù)
cancel();
}
};
// 任務(wù)延遲1秒后執(zhí)行
timer.schedule(task, 1000);
}
}
在上面的示例中,TimerTask
的run()
方法會(huì)輸出一條消息并調(diào)用cancel()
方法取消任務(wù)的執(zhí)行。因此,任務(wù)只會(huì)執(zhí)行一次。
希望以上內(nèi)容對你有幫助!