代码之家  ›  专栏  ›  技术社区  ›  Amir Afghani

Java中的定时器与线程原语

  •  2
  • Amir Afghani  · 技术社区  · 15 年前

    有没有人注意到用线程创建一个在while(true)循环中工作的线程。sleep(t)似乎比用Java创建一个t唤醒的计时器消耗更多的CPU?任何具有JVM专业知识的人都知道这是为什么吗?我只在Windows和Linux x86上尝试过。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Alex Ling Zhong    15 年前

    根据 Javadoc for the Timer class ,有一个后台线程完成此工作:

    对应于每个计时器对象的是一个单独的后台线程,用于按顺序执行计时器的所有任务。计时器任务应快速完成。如果计时器任务需要过多的时间来完成,它将占用计时器的任务执行线程。这反过来又会延迟后续任务的执行,当(如果)违规任务最终完成时,后续任务可能会“扎堆”并快速连续执行。

    你如何观察CPU的使用情况?你试过JVM分析器吗?