public class MyTimer {
private static int count = 1;
private static List<String> userList = Arrays.asList("a", "b", "c", "d");
public static void main(String[] args) throws ParseException {
System.out.println(Thread.currentThread().getName() + " → " + "预备开始" + new Date());
Timer timer = new java.util.Timer();
Date firstTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2023-05-21 13:25:00");
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " → " + "第" + count++ + "次执开始行" + " Start Time = " + new Date());
for (int i = 0; i < userList.size(); i++) {
System.out.println(Thread.currentThread().getName() + " 给 " + userList.get(i) + " 发送一条消息: " + " 恭喜发财 " + new Date());
}
System.out.println(Thread.currentThread().getName() + " → " + "第" + count++ + "次执开始行" + " End Time = " + new Date());
}
}, firstTime, 3000);
}
}
执行结果分析
执行结果 | 分析 |
---|
前置条件:2023-05-21 13:25:00 正式执行,周期3 秒 | |
main → 预备开始Sun May 21 13:24:38 CST 2023 | 启动程序 |
Timer-0 → 第1次执开始行 Start Time = Sun May 21 13:25:00 CST 2023 | 第1 次开始执行 |
Timer-0 给 a 发送一条消息: 恭喜发财 Sun May 21 13:25:00 CST 2023 | |
Timer-0 给 b 发送一条消息: 恭喜发财 Sun May 21 13:25:00 CST 2023 | |
Timer-0 给 c 发送一条消息: 恭喜发财 Sun May 21 13:25:00 CST 2023 | |
Timer-0 给 d 发送一条消息: 恭喜发财 Sun May 21 13:25:00 CST 2023 | |
Timer-0 → 第2次执开始行 End Time = Sun May 21 13:25:00 CST 2023 | 第1 次执行完毕 |
Timer-0 → 第3次执开始行 Start Time = Sun May 21 13:25:03 CST 2023 | 第2 次开始执行 |
Timer-0 给 a 发送一条消息: 恭喜发财 Sun May 21 13:25:03 CST 2023 | |
Timer-0 给 b 发送一条消息: 恭喜发财 Sun May 21 13:25:03 CST 2023 | |
Timer-0 给 c 发送一条消息: 恭喜发财 Sun May 21 13:25:03 CST 2023 | |
Timer-0 给 d 发送一条消息: 恭喜发财 Sun May 21 13:25:03 CST 2023 | |
Timer-0 → 第4次执开始行 End Time = Sun May 21 13:25:03 CST 2023 | 第2 次执行完毕 |