`
thinkact
  • 浏览: 83409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多线程与cpu利用率的问题

    博客分类:
  • Java
阅读更多
运行环境:
windows2003 64bit, 2g 4核 intel至强cpu, 4G内存
jdk1.5, Jboss 4.2.2
MySql 5
使用了struts, spring, hibernate
任务说明:
使用jdk1.5 的concurrent包创建线程池调度程序, 调度400多个Runnalbe对象, 每10分钟执行一遍400个任务,每个任务在多线程运行的情况下大概需要1分钟才能完成。如果只执行一个任务,用不了1秒钟。

代码片段:
//==============================================================
//myTaskThread -- 任务类
public class myTaskThread implements Runnable{

public void run() {
// 执行任务
。。。
}
}
//====================================================
public class TargetExecutor {
//线程池大小设置
private int poolSize = 10;
private Executor executor; //声明一个执行器

private final Logger log = Logger.getLogger(TargetExecutor.class);
public void init(){
//初始设置线程池大小
executor = Executors.newFixedThreadPool(poolSize); }
//executeTasks()每10分钟执行一次
public void executeTasks() {
//系统启动时把400多个myTaskThread对象存入这个set中
Set taskSet = getTargetThreadSet();
Iterator it = targetSet.iterator();

while(it.hasNext()){
MyTaskThread thread = (MyTaskThread) it.next();
executor.execute(thread);
}
}
}
//====================================================


问题: 尽管任务很多,每个任务耗时也比较长,但是cpu的利用率只有1~2%, 我把线程池的大小调到50, 100, 200都不能提高CPU的利用率。

请问怎样提高jvm的cpu的利用率
分享到:
评论
2 楼 thinkact 2008-07-26  
任务代码有段连接远程web 服务器的动作, 我把它换成循环10000次,CPU的使用率就上去了,看来这就是瓶颈。多谢
1 楼 llade 2008-07-26  
你任务代码里干了什么没贴出来,根本没法评估嘛。
引用

   大概需要1分钟才能完成。

是指400个任务1分钟?400个任务每个任务1分钟?,所有任务完成的时间是多少?你只是启动了10个线程来干活。假如你的任务总是等待IO的话(比如说数据库连接数不够),那CPU利用率根本上不去,瓶颈根本不在线程,你的run方法里找出执行时间最长的语句再分析。

相关推荐

    使用C++获取指定线程的CPU使用率

    在C++编程中,获取指定线程的CPU使用率...在C++中实现线程CPU使用率的获取涉及到对操作系统特性的深入理解和对系统API的熟练运用。通过上述方法,开发者可以监控程序中特定线程的资源消耗,从而进行更有效的性能优化。

    获取每个线程的CPU使用率源代码

    `WPC`提供了一个丰富的接口,允许开发者访问系统的各种性能指标,包括线程CPU使用率。另外,还可以利用`NT Kernel & System`进程的`Thread`对象下的`% Processor Time`计数器来获取。 在Linux系统中,可以使用`/...

    可以查看多线程cpu占用率的工具

    用在嵌入式linux平台上,通常busybox的top无法看到多线程应用的每个线程的cpu占用率,特地编写了这个小工具.

    让双核cpu利用率100%的代码

    让双核cpu利用率100%的代码,增加多线程就可以,如果想要内存满了,就不断开辟内存,仅仅是eclipse内存。 资源利用率 java 100% cpu 死机 资源利用率 java 100% cpu 死机 资源利用率 java 100% cpu 死机 资源利用率 ...

    linux cpu利用率和使用情况

    `ublinuxidc.jpg`和`logo.png`可能是与这个系统或工具相关的图形标识,它们对理解CPU利用率和使用情况的知识点帮助较小,但可能在实际应用中用于界面展示或品牌标识。 总的来说,理解Linux下的CPU利用率和使用情况...

    采用多线程技术提高多核CPU利用率.pdf

    采用多线程技术提高多核CPU利用率.pdf

    LINUX_CPU利用率算法android

    在Linux系统中,CPU利用率的计算涉及到对/proc文件系统的理解和分析。/proc文件系统是一个虚拟文件系统,它提供了获取系统信息和与内核交互的途径。在这个文件系统中,有两个关键的文件——/proc/cpuinfo和/proc/...

    CpuUsage(显示cpu利用动态曲线图)

    一、CPU利用率的含义与重要性 CPU利用率是指CPU在一段时间内处于忙碌状态的比例,通常以百分比表示。高CPU利用率可能表明系统负载过重,可能导致响应速度减慢,甚至系统崩溃。因此,通过CpuUsage这样的工具,我们...

    CPU利用率的算法问题、包括封装的类VC6

    此外,为了提高效率,可以考虑使用多线程或者异步操作来定期更新CPU利用率,避免阻塞主线程。同时,对于长时间运行的应用,应适当增加采样间隔,以减少对CPU资源的占用。 总之,理解CPU利用率的计算算法和如何在VC6...

    CPU利用率组件源码

    6. **多线程/异步更新**:为了实时显示CPU利用率,源码可能使用多线程或定时器来定期更新并显示数据。在C语言中,可以使用`pthread`库创建和管理线程。 7. **输出显示**:最后,源码还需要将计算得到的CPU利用率...

    基于WinSock的多线程CPU资源利用研究.pdf

    综上所述,基于WinSock的多线程CPU资源利用研究涉及了网络编程、多线程设计、CPU资源管理等多个方面。开发者需要理解WinSock的工作原理,掌握多线程编程技巧,合理控制线程数量,运用线程池和同步机制,以及利用CPU...

    用java获取CPU占用率

    然而,在示例代码中,具体实现细节未完全展示,但可以推测其通过某种方式读取了系统性能数据,然后基于这些数据计算出CPU的利用率。 #### 3. **Linux平台下的CPU占用率计算** 对于Linux系统,CPU占用率的计算通常...

    LINUX CPU利用率算法android.pdf

    在/proc目录下,有许多文件用于展示系统的实时状态,其中与CPU利用率相关的文件主要有两个:/proc/cpuinfo和/proc/stat。 /proc/cpuinfo文件包含了关于CPU的各种详细信息,例如处理器型号、频率、缓存大小等。在这...

    linux-让多核CPU达到指定的CPU使用率脚本

    - 脚本可能通过监控`/proc/stat`文件获取CPU利用率信息,该文件提供了系统运行状态的实时统计。 - 脚本会自动排除自身占用的CPU%,确保计算的CPU使用率反映的是其他进程的使用情况。 - 当CPU使用率低于某个设定...

    java 通过jni查看windows的CPU利用率的问题

    这篇博客“java通过JNI查看windows的CPU利用率的问题”探讨了如何利用JNI来获取Windows操作系统的CPU使用率。这个话题涉及到多方面的技术,包括JNI的原理、Windows API的调用以及性能指标的获取。 首先,我们需要...

    多线程基础与基于多线程的简单聊天室

    1. **多线程的概念**:多线程是指在一个程序中同时执行多个不同的线程,每个线程可以独立地执行任务,提高了CPU资源的利用率,减少了程序的响应时间。 2. **Java中的线程**:Java提供两种创建线程的方式,一是通过...

    多线程_按键精灵经典多线程操作_

    2. **资源利用率最大化**:多线程使得CPU的空闲时间减少,尤其是在多核处理器环境下,每个核心都可以处理一个线程,使得系统资源得到充分利用。 3. **任务独立性**:每个线程执行的任务相互独立,即使其中一个线程...

    获取当前所有进程线程Cpu占用率

    - `ProcessCpu.cs`和`ThreadCpu.cs`可能是专门处理进程和线程CPU利用率的类。 - `AssemblyInfo.cs`包含了程序集的元数据,如版本信息、版权等。 - `App.ico`是应用程序的图标。 - `Example.resx`是资源文件,...

    Qt实现的实时显示CPU使用率

    这个项目不仅展示了Qt的跨平台能力,还涉及到系统编程、数据可视化以及多线程编程(如果需要异步获取数据)。对于Qt开发者来说,这是一个很好的实践项目,可以帮助他们深入理解Qt框架和系统资源管理。

    多线程的运用e语言多线程 e多线程

    在编程领域,多线程是一种重要的并发执行机制,它允许程序同时执行多个任务,从而提高系统资源利用率和程序响应速度。E语言(可能是错误输入或者是某个特定编程环境或语言的简称)中的多线程功能也不例外。本文将...

Global site tag (gtag.js) - Google Analytics