future java 多线程_Java多线程之ThreadPoolExecutor和Future结合使用

List> returnFuture = new ArrayList<>();

ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("openAccount-pool-%d").build();

ExecutorService pool = new ThreadPoolExecutor(2, 4, 60L, TimeUnit.SECONDS,

new LinkedBlockingQueue(), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());

for(int i=0;i<10;i++){

returnFuture.add(pool.submit(new OpenAccountCallable(pcl,record, withholdService,oaInput)));

}

pool.shutdown();

for (Future future : returnFuture) {

OpenAccount record = new OpenAccount();

try {

record = future.get();

} catch (Exception e) {

e.printStackTrace();

}

System.out.print(record.toString());

}

public static class OpenAccountCallable implements Callable{

private PayChannel payChannel;

private OpenAccount openAccount;

private IWithholdService withholdService;

private Object object;

private OpenAccountCallable(PayChannel payChannel,OpenAccount openAccount ,IWithholdService withholdService,Object object){

super();

this.payChannel = payChannel;

this.openAccount = openAccount;

this.withholdService = withholdService;

this.object = object;

}

@Override

public OpenAccount call() throws Exception {

OpenAccount oat = new OpenAccount();

if(this.openAccount!=null){

oat = this.openAccount;

}

if(this.object instanceof OpenAccountInput){

}else if(this.object instanceof OpenAccountVerifyInput){

OpenAccountVerifyInput input = (OpenAccountVerifyInput) this.object;

logger.info("渠道{}短信成功之后开户操作==request:{}",payChannel.getChannelName(), input.toString());

OpenAccountVerifyOutput outPut;

//尽量捕获异常,否则获取返回的内容会有问题returnFuture

try {

outPut = withholdService.openAccountVerify(input);

logger.info("渠道{}短信成功之后开户操作==response:{}",payChannel.getChannelName(), outPut.toString());

if(WithholdConstant.WITHHOLD_RESPCODE_SUCCESS.equals(outPut.getRespCode())){

oat.setOpenStatus(Constants.COMMON_STATUS_SUCCESS);

}else if(WithholdConstant.WITHHOLD_RESPCODE_PROCESSING.equals(outPut.getRespCode())){

oat.setOpenStatus(Constants.COMMON_STATUS_PROCESS);

}else{

oat.setOpenStatus(Constants.COMMON_STATUS_FAIL);

}

} catch (Exception e) {

oat.setOpenStatus(Constants.COMMON_STATUS_FAIL);

logger.info("短信成功之后开户操作异常:{}",e.getMessage());

}

oat.setSerialNo(input.getSerialNo());

}

oat.setChannelId(this.payChannel.getId());

return oat;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值