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