1 package com.cn.donleo.thread.timer; 2 3 import java.util.Timer; 4 import java.util.TimerTask; 5 import java.util.concurrent.ScheduledExecutorService; 6 7 /** 8 * @author liangd 9 * date 2020-11-02 11:10 10 * code 定时器测试类 11 */ 12 public class TestTimer { 13 public static void main(String[] args) { 14 myTimer(); 15 } 16 17 private static void myTimer() { 18 //将a改为引用对象,在run方法改变其值 19 final int[] a = {0}; 20 //可以换用ScheduledExecutorService代替Timer 21 //多线程并行处理定时任务时,Timer运行多 个TimeTask时,只要其中之一没有捕获抛出的异常, 22 //其它任务便会自动终止运行,使用ScheduledExecutorService则没有这个问题。 23 Timer timer = new Timer() { 24 }; 25 timer.schedule(new TimerTask() { 26 @Override 27 public void run() { 28 System.out.println(a[0]++); 29 if (a[0] == 6) { 30 System.out.println("定时器取消"); 31 timer.cancel(); 32 } 33 } 34 //延时4s,间隔2s再执行一次 35 }, 4000, 2000); 36 } 37 }