【发布时间】:2010-07-19 20:07:08
【问题描述】:
我使用 Timer 作为进程中断机制。逻辑流程如下:
T0:在T0创建新的定时器,并安排一个新的定时器任务在T2执行(1秒任务延迟,任务很简单——设置一个标志变量)
T1:在主调用线程,休眠5秒
T2:在定时器线程中,任务执行
T5:睡眠结束
T6:取消计时器和任何计划任务
代码在我的 Windows 和 Ubuntu 开发环境中完美运行。但是当我在我的 SLES 10 构建服务器上运行相同的代码时,日志会指示此执行顺序:
T0:创建定时器和定时器任务在T2执行
T1:主线程休眠 5 秒
T5:主线程唤醒
T6:定时器取消
T7:任务执行
谁能解释为什么会发生这种情况?非常感谢。
【问题讨论】:
-
您使用什么日志记录机制?可能只是日志没有被正确刷新。
-
我正在使用 log4j。我正在使用 System.currentTimeMillis 为每个步骤记录时间戳,所以我希望日志输出的顺序不是罪魁祸首。
标签: java multithreading timer