读书人

java线程的有关问题

发布时间: 2012-01-28 22:06:14 作者: rapoo

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();
}

读书人网 >J2SE开发

热点推荐