3
更新:我不知道为什么,但它突然变得很好。现在该程序的CPU使用率仅为10%〜17%。为什么“while(true)”与“Thread.sleep”会导致100%的CPU使用率?
我在java中制作linux背景问题。
该问题应该每100秒执行一次。
所以我做一个定时器类和一些代码象下面这样:
while(true) {
try {
Thread.sleep(1000 * 100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
但它仍然充满了CPU使用率。
这就是整个main()。没有其他程序正在运行。
public static void main(String[] args) throws WeiboException, HttpException, IOException{
timer = new Timer(true);
timer.schedule(new Getdatatimer(), 0, 100 * 1000);
System.out.print("runnning \n");
while(true) {
try {
Thread.sleep(1000 * 100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
定时器每隔100秒准确运行一次。但问题是CPU使用率。
单独的代码不应该导致“100%的CPU”(除非有一个下流的数量,如果InterruptedExceptions) - 其他线程正在运行?你是否100%确定代码是运行的代码,并且没有过时的类? – 2011-11-29 06:24:35
当你把'System.out.println(“hi!”+ System.currentTimeMillis());'在'Thread.sleep'上面的行上时会发生什么?它打印“嗨!”期望的“毫秒”间隔的预期次数?我怀疑执行的JAR /类没有被正确重建。 – 2011-11-29 06:33:29
你在做什么getdatatimer()?如果您在timerTask中再次安排了一些初始延迟为0的事情,您可能会陷入无限循环。 –