Java 线程池的应用场景【1】

线程池的应用场景【1】
场景:数据更新
待更新的数据较多,分布在多个mysql数据表中

准备:构造线程池

public class ThreadPoolManager {

    private final static int CORE_POOL_SIZE = 4;

    final static RejectedExecutionHandler HANDLER = (r, executor) -> System.out.println("工作队列被拒绝");

    public static final ThreadPoolExecutor THREAD_POOL
            = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS
            , new ArrayBlockingQueue(WORK_QUEUE_SIZE), HANDLER);
}

返回对象:

public class KeyInfoVO {
    public static final KeyInfoVO EMPTY = new KeyInfoVO ();
    private Integer UserId = 0;
    private Integer UserHomeId = 0;
    private Integer UserOtherId = 0;
    private Integer UserWorkId = 0;

    }

入参:

public class CompleteKeyInfo implements Serializable {
 public static final KeyInfo EMPTY = new KeyInfo();
 
    private Integer type;
    @ApiModelProperty("用户基本信息")
    private UserInfo userInfo ;
    @ApiModelProperty("用户家庭信息")
    private UserHomeInfo userHomeInfo ;
    @ApiModelProperty("用户其他信息")
    private UserOtherInfo userOtherInfo ;
    @ApiModelProperty("用户工作信息")
    private UserWorkInfo userWorkInfo ;
    
    
    }

具体使用场景:
利用多线程去更新数据

   
    private static final Integer LATCH_COUNT = 4;
 
    public KeyInfoVO  modify(KeyInfo keyInfo) throws Exception {
       KeyInfoVO vo = new KeyInfoVO();
        final CountDownLatch latch = new CountDownLatch(LATCH_COUNT);
        ThreadPoolManager.THREAD_POOL.execute(() -> {
            Integer integer = userService.modify(keyInfo.getUserInfo());
            System.out.printf("--------------------"+integer);
            vo.setUserId(integer);
            latch.countDown();
        });
        ThreadPoolManager.THREAD_POOL.execute(() -> {
            Integer integer = UserHomeService.modify(keyInfo.getUserHomeInfo ());
            vo.setUserHomeId (integer);
            latch.countDown();
        });
        ThreadPoolManager.THREAD_POOL.execute(() -> {
            Integer integer = UserOtherService.modify(keyInfo.getUserOtherInfo ());
            vo.setUserOtherId (integer);
            latch.countDown();
        });
        ThreadPoolManager.THREAD_POOL.execute(() -> {
            Integer integer = UserWorkI.modify(keyInfo.getUserWorkInfo ());
            vo.setUserWorkId (integer);
            latch.countDown();
        });
        latch.await(20, TimeUnit.SECONDS);
        return vo;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值