我有一个每隔一秒运行一次的定期线程并引用该应用程序。问题是当线程运行时cpu使用率上升且程序响应非常糟糕似乎CPU风扇正在全功率工作。也许在这里使用无限的问题。这有什么其他办法吗?
Runnable r1 = new Runnable() {
public void run() {
try {
while (connect.isDisable()){
refresher(rx);
Thread.sleep(1000L);
}
} catch (InterruptedException iex) {}
}
};
Thread thr1 = new Thread(r1);
thr1.start();
如果有一种替代方式,这组函数每隔一个并行运行一次,并且事件处理程序就像正常一样响应吗?
答案 0 :(得分:1)
首先,thread
是程序中语句或代码的执行序列,并不是硬件。这是一个执行的流程。
执行线程是最小的编程指令序列,可由调度程序独立管理,调度程序通常是操作系统的一部分。
是的,如果你的CPU有多个核心,多个threads
可能会同时运行。这当然会增加CPU使用率,因为多个进程或代码序列同时运行。您要求CPU同时执行2个或更多操作,因此过度使用是一个明显的后果。
关于风扇,可以设计为在CPU使用率较高时运行得更快,以便产生的多余热量被有效驱散。