gpt4 book ai didi

java - ScheduledThreadPoolExecutor 迟到了

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:30 27 4
gpt4 key购买 nike

我有这个简单的代码片段:

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(10);

Runnable r = new Runnable() {

@Override
public void run() {
System.err.println(Calendar.getInstance().getTime());
}
};

exec.scheduleAtFixedRate(r,0, 500, TimeUnit.MILLISECONDS);
}

在一台机器上,这段代码按预期运行。控制台输出:

  • 2012 年 7 月 3 日星期二 10:32:34
  • 2012 年 7 月 3 日星期二 10:32:34
  • 2012 年 7 月 3 日星期二 10:32:35 EEST
  • 2012 年 7 月 3 日星期二 10:32:35 EEST
  • 2012 年 7 月 3 日星期二 10:32:36
  • 2012 年东部时间 7 月 3 日星期二 10:32:36...

但是在另一台机器上,控制台上的时间戳显示 ScheduledThreadPoolExecutor 正在迟到。迟到是指几秒钟 :)

  • 2012 年 7 月 3 日星期二 10:32:34
  • 2012 年 7 月 3 日星期二 10:32:37
  • 2012 年 7 月 3 日星期二 10:32:40
  • 2012 年 7 月 3 日星期二 10:32:44
  • 2012 年 7 月 3 日星期二 10:32:50
  • 2012 年东部时间 7 月 3 日星期二 10:32:55...

成功运行代码的第一台机器的详细信息:

i3 window 7 64 位JRE 1.6.0.30

调度延迟的第二台机器的详细信息:

双核Windows XP 32 位JRE 1.6.0.18

我想知道为什么会有这样的差异。有什么建议吗?

提前致谢。

最佳答案

其实schedule timer是不准确的,它是通过cpu ticks来计算时间的。所以如果你的机器负载太重,可能会有一些延迟。检查你的第二台机器的负载!

关于java - ScheduledThreadPoolExecutor 迟到了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306485/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com