小弟有个关于多CPU下跑多线程的问题:
  现在应用场景是这样的,一个B/S系统,用户提交请求到服务器端之后,服务器开始计算,计算过程使用多线程实现。服务器使用的是多CPU(4个哦CPU)的服务器,但是测试中发现尽管线程数已经调到很高(>40个线程),但是仅仅是1个CPU被使用,使用率仅为60%,其它CPU的使用率都为0%。
请问如果要将4个CPU都利用上该如何实现?是需要配置服务器吗?还是可以通过程序进行控制?
 (应用中使用websphere,jdk1.4)

解决方案 »

  1.   

    我觉得你可以升级一下jdk的版本试试。
    可能java不提供对多cpu的支持,或者需要额外的开发包的支持。
      

  2.   

    等待,这个问题我没怎么注意CPU问题,学习
      

  3.   

    不够用的时候应该会用吧 现在不是没占用满么 看看占用满之后是什么效果 是分配给其他的CPU还是还在那一个CPU死撑着
      

  4.   

    应该不需要配置什么,线程调度是由操作系统负责的,java 这一层上也控制不了。照理说应该不可能啊,我测试过 4 个四核 CPU 的服务器,16 个 CPU 状态值都有变化的。
      

  5.   


    我想解决的问题是如何提高4个CPU的平均使用率,能让4个CPU的平均使用率在20%左右。而不是只有一个CPU使用率很高。
      

  6.   

    如果要将4个CPU都利用上该如何实现?是需要配置服务器吗?还是可以通过程序进行控制?
    你的java程序怎么控制得了硬件的东西尼,要控制起码也是用c,c++来弄把
      

  7.   

    我感觉这样的功能不能在java应用程序层完成。
    如果有这样的功能,也应该是在虚拟机层面上。
      

  8.   


    c能控制  java就能 问题不在语言,在接口
      

  9.   

    这是一个负载均衡的问题,正像上述大大说的那样,java本身是不提供的!当然某些框架会提供!也可以通过f5服务器来解决。
      

  10.   

    我也觉得,这不是java能解决的事。或许和操作系统和jvm有关。
      

  11.   

    反正俺搜索的时候说内存分配是由JVM来负责的 可以观察下这方面的信息嘛
      

  12.   

    下。我看见有些帖子说在JDK1.4之后,java多线程会分配到多个CPU·
    不过没有人给出准确答案~
      

  13.   

    我找到个方法,楼主不妨一试。
    ctrl+alt+del
    任务管理器,从进程中找到正在运行的java程序,右键->关系设置。
    不知道你的面板里是否能看到四个cpu。我没用过这样的机器。
    行与不行,试完了吼一嗓子哦。
      

  14.   


    呵呵。多谢bayougeng想的这个主意。真的很有意思!
    不论是多少个CPU默认情况下关系设置都是处于全选状态。
    这个主意给了我很多提示。超赞!
      

  15.   

    看到 大波姐 warison2008 的头像 就知道那是标准答案。不管哪个帖子都是