-1

在我的应用程序中,我有持续运行的 While(True) { } 循环。这需要 100% 的 CPU 使用率。即使是从多个线程调用这个 while 循环来运行某些特定功能,它也会强制 CPU 以 100% 的速度运行。

我根据某些条件设置了一些睡眠,比如收集是空的,然后需要睡眠,但如果收集已满,那么它不会减少 CPU 的使用。

While(true)
{
if(condition)
Thread.sleep(30);//Under some condition
//Process data on collection
//Set sleep condition
}

我如何控制这个循环并允许其他进程和线程工作。

4

1 回答 1

0

你会想在 if 之后睡觉:

while(true) 
{
   if (condition) {
      //treat data
   }
   sleep(30)
}

现在,您仅在列表为空时处于睡眠状态,当列表已满时,您将返回活动等待,因此 CPU 为 100%

于 2013-10-25T04:52:40.643 回答