日期:2014-05-20  浏览次数:20758 次

java线程的问题
我写了一个简单的线程
public void run(){
while(true){
try {
//Thread.sleep(3000);
System.out.println(Thread.currentThread().getName()+"is running......");
} catch (Exception e) {
e.printStackTrace();
}

}
}

为什么这个程序在执行的时候CPU占用率是100%,而把注释部分的//Thread.sleep(3000);加上以后,CPU的占用率就下降了很多呢。不都是在死循环里执行的吗?

------解决方案--------------------
不加Thread.sleep(3000);时程序不停的执行System.out.println(Thread.currentThread().getName()+"is running......");CPU占用率肯定高
加了后执行一次就休眠3秒,CPU占用率就下降了
------解决方案--------------------
楼上所言极是
------解决方案--------------------
while(true){}
是永真循环
------解决方案--------------------
就是这么的..........
------解决方案--------------------
理由楼上说了,一般为了在大循环中让出cpu时间,通常采用sleep或者yield
while(true){ 
try { 
//Thread.sleep(3000); 
System.out.println(Thread.currentThread().getName()+"is running......"); 
yield(); //这样也可以
} catch (Exception e) { 
e.printStackTrace();