首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java线程的有关问题

2012-01-28 
java线程的问题我写了一个简单的线程public void run(){while(true){try {//Thread.sleep(3000)System.ou

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

热点排行