【问题标题】:java multithreading cpu utilizationjava多线程cpu利用率
【发布时间】:2012-03-01 07:08:49
【问题描述】:

我有一个部署在tomcat 6 中的应用程序
在这个应用程序中,我创建了一个 thread class,它从一个表中获取 1000 条记录并处理它们并存储在 DataBase 的 4 个不同的表中。
我一次运行两个threads 以保护进程免受deadlock 的影响。
根据我的cpu utilization,有什么方法可以schedule these threads
IE。如果没有cpu,则不会创建新线程。

【问题讨论】:

  • 我认为这个问题不应该是一个负数。这是个好问题

标签: java multithreading tomcat memory-management batch-processing


【解决方案1】:

如果我正确理解了您的问题,我认为 Joshua Bloch 的《Effective Java》第二版中考虑了这个案例:

如果服务器负载过重以至于其所有 CPU 都已满 使用,并且更多的任务到达,将创建更多的线程,这 只会让事情变得更糟。因此,在重载 生产服务器,你最好使用 Executors.newFixedThreadPool,它给你一个固定的池 线程数,或直接使用 ThreadPoolExecutor 类,用于 最大控制。

虽然我还没有尝试过,但使用 Executors 似乎是个好主意。

【讨论】:

    【解决方案2】:

    没有办法使用纯 java 代码检测 CPU 利用率。但你可以打电话 Runtime.getRuntime().exec("top") 然后分析 inputStream 结果以查找 CPU 利用率。如果超载了,不要启动新线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      相关资源
      最近更新 更多