多核环境下的多线程编程,怎么样才能充分利用到各个CPU,JRockit的JDK可以指定CPU, 那SUN的呢?

u010165494 2013-04-15 08:45:36
我在网上看到JRockit的JDK里面有指定使用cpu个数的方法 suggestProcessAffinity():
for (Iterator it = JVMFactory.getJVM().getProcessAffinity().iterator(); it
.hasNext(); count++) {
CPU cpu = (CPU) it.next();
cpus.add(cpu);
}
cpu_set.add(cpus.get(0));
cpu_set.add(cpus.get(1));
jvm.suggestProcessAffinity(cpu_set);

现在我有以下疑问:
1.是不是只有指定了cpu个数才能充分利用多核,多CPU的功能?
2.SUN的JDK里面有没相应的方法?
3.网上有人多在多核CPU的情况下,多线程是不是只利用到了单CPU?
...全文
268 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xianwangkai 2013-04-16
  • 打赏
  • 举报
回复
线程数这个问题,我觉得要看你的项目情况: 1、对于并发大的,按照常理理解,肯定线程池越多越好,但是也存在一个问题,一个进程中的线程数是有限的,所以这个不只是凭经验的问题,要自己试验才可以得出结果。 2、还有情况就是当cpu数一定情况下,单个线程执行时间比较长的话,可能线程数越小越好,这样子不会存在很大的等待问题,单线程执行时间较短的话,可以适当的线程数大点好,利用率可以上去。
火影之贺 2013-04-16
  • 打赏
  • 举报
回复
我也不太懂,就当抛砖引玉吧! 感觉你贴出的代码,最重要的作用是获得CPU的个数,为了后续创建合适的多线程数,也就是线程池的大小。 如果只是获得CPU的个数,sun的JDK肯定有同样的方法。 最后:程序员应该不会指定哪个CPU执行哪个线程的吧? 咱控制好的!不如交个操作系统控制,但是交个操作系统多少个线程,这个程序员就可以决定了。

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧