while(ture) {} 循环

while(ture) {} 循环

while(true) {} 需要在循环内添加Thread.sleep(1)即可解决while循环CUP占用率高的问题,严重的会导致电脑卡死,所以这个问题很严重。

 

在while(true) {} 循环内加上一句Thread.sleep(1) 即可解决该问题。也就是延时1ms。

此问题同样适合于多线程中的while循环。


while(true){Thread.sleep(1)}可控性低的改进——解决方案

做各种service的时候,常常会需要一个程序重复定时地执行,基本上常见的山寨写法都是如下所示:

 

While(true) {

         //code

         Thread.sleep(3000);

}

 

但实际这样的写法可控性很低,JDKjava.util.concurrent中提供了大量的方法控制一段代码定时执行,标准的改写上面的代码如下:

 

ScheduledExecutorService scheduler =Executors.newScheduledThreadPool(1);

Scheduler.scheduleWithFixedDelay(newRunner(), 0, 3, TimeUnit.SECONDS);

Public class Runner implements Runnable {

         Pulbicvoid run() {

                   //code

}

}


你可能感兴趣的:(java并发编程)