线程并行到其他进程java

时间:2016-03-15 18:32:42

标签: java multithreading

我有一个每隔一秒运行一次的定期线程并引用该应用程序。问题是当线程运行时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();

如果有一种替代方式,这组函数每隔一个并行运行一次,并且事件处理程序就像正常一样响应吗?

1 个答案:

答案 0 :(得分:1)

首先,thread是程序中语句或代码的执行序列,并不是硬件。这是一个执行的流程。

  

执行线程是最小的编程指令序列,可由调度程序独立管理,调度程序通常是操作系统的一部分。

是的,如果你的CPU有多个核心,多个threads可能会同时运行。这当然会增加CPU使用率,因为多个进程或代码序列同时运行。您要求CPU同时执行2个或更多操作,因此过度使用是一个明显的后果。

关于风扇,可以设计为在CPU使用率较高时运行得更快,以便产生的多余热量被有效驱散。