java线程的问题

arsenic 2007-10-09 10:08:34
我写了一个简单的线程
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的占用率就下降了很多呢。不都是在死循环里执行的吗?
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2007-10-10
  • 打赏
  • 举报
回复
理由楼上说了,一般为了在大循环中让出cpu时间,通常采用sleep或者yield
while(true){
try {
//Thread.sleep(3000);
System.out.println(Thread.currentThread().getName()+"is running......");
yield(); //这样也可以
} catch (Exception e) {
e.printStackTrace();
}
yuyu622 2007-10-10
  • 打赏
  • 举报
回复
就是这么的..........
qiuqiupeng 2007-10-10
  • 打赏
  • 举报
回复
while(true){}
是永真循环
arsenic 2007-10-10
  • 打赏
  • 举报
回复
谢谢大家。
vcokno1 2007-10-09
  • 打赏
  • 举报
回复
楼上所言极是
lm_pla 2007-10-09
  • 打赏
  • 举报
回复
不加Thread.sleep(3000);时程序不停的执行System.out.println(Thread.currentThread().getName()+"is running......");CPU占用率肯定高
加了后执行一次就休眠3秒,CPU占用率就下降了

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧