Java多线程之ThreadPoolExecutor和Future结合使用
来源:互联网 发布:蚌埠学院网络选课 编辑:程序博客网 时间:2024/06/04 20:10
List<Future<OpenAccount>> returnFuture = new ArrayList<>();ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("openAccount-pool-%d").build();ExecutorService pool = new ThreadPoolExecutor(2, 4, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), 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<OpenAccount> 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<OpenAccount>{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;}@Overridepublic 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;//尽量捕获异常,否则获取返回的内容会有问题returnFuturetry {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
- Java多线程之ThreadPoolExecutor和Future结合使用
- Java多线程之ThreadPoolExecutor
- Java多线程之ThreadPoolExecutor
- java多线程之ThreadPoolExecutor
- java多线程之ThreadPoolExecutor
- JAVA多线程之Future的实际使用
- Java多线程之 Callable、Future和FutureTask
- Java多线程之Callable和Future
- Java多线程之Callable、Future和FutureTask
- java多线程之Callable和Future
- java多线程之Future和FutureTask
- Java多线程之CyclicBarrier、Future和FutureTask
- java多线程之Callable和Future
- java 多线程之future用法和意义
- Java多线程之Callable、Future和FutureTask
- Java多线程-线程池ThreadPoolExecutor的submit返回值Future
- Java 多线程编程之九:使用 Executors 和 ThreadPoolExecutor 实现的 Java 线程池的例子
- Java 多线程编程之九:使用 Executors 和 ThreadPoolExecutor 实现的 Java 线程池
- wampServer3.1.0_x64 局域网ip访问配置
- ios与H5(JS)交互心得
- Global Shutter(全局快门)与Rolling Shutter(卷帘快门)的区别与比较
- Linux下添加新硬盘,分区及挂载
- 数字字符串转换为字母组合的种数
- Java多线程之ThreadPoolExecutor和Future结合使用
- Java IO的个人学习笔记(2)
- 杭电acm2037 今年暑假不AC
- [JZOJ4367]【GDKOI2016】小学生数学题(口胡)
- 函数file_put_contents();详解与实例
- 谈谈IT行业那些风投事
- Session的存放区与取出
- Activity和Fragment Transition介绍
- Monkey