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的事情,您可能會陷入無限循環。 –