qing_gee
沉默王二
2014-12-31 02:56

使用多个线程池还是一个线程池

  • 同步锁
  • 多线程
  • 线程池

最近在技术理论上遇到一个问题,不知道怎么解决。
问题描述:我们交易平台有4个商品(A、B、C、D)需要进行现在交易,交易的核心方法dealorder是
一个加了锁和事务的方法,而且该类是针对每一个商品的,即最多同时可以执行4个dealOrder方法,即每个商品执行一个该方法。

 @Transactional
    public synchronized Message dealOrder()

CPU核心数是固定的,假如为6核心,目前就存在一个问题,
情况1:假如说创建一个线程池,过来了大量的A商品请求,超过6个就被放进了队列中,再过来B、C、D商品的请求,也无法再进行处理。
情况2:假如说创建6个线程池,每个商品一个线程池,这时候,理论上ABCD四个商品就会在各自的线程池中进行处理,这样就不会发上1情况的其他商品等待资源释放的问题,但是真实情况下,6个线程池会去抢占一个CPU获得处理还是自动获取6个CPU核心数进行处理.
我现在没有理论上的经验,通过实践似乎可以看出来2情况要理想,但是真实情况下是否如此,真心需要理论上给出结论。

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

7条回答