执行主线程之后又执行了几个子线程,保证子线程执行完成在结束主线程
来源:互联网 发布:永久封的淘宝店能解吗 编辑:程序博客网 时间:2024/06/05 00:55
这是因为一个坑:主线程执行结束了,子线程还没有结束就直接return了
@RequestMapping(value = "/return", method = RequestMethod.POST) private JsonResult returnDeposit(@RequestBody Map<String, Object> params) { //新建一个线程池 ExecutorService cachedThreadPool = Executors.newCachedThreadPool();CountDownLatch cdl = new CountDownLatch(2);//这个数量写你新建子线程的数量cachedThreadPool.execute(new Runnable() { @Override public void run() { logger.info("第一个线程"); //完成,计数器减一 cdl.countDown(); } }); cachedThreadPool.execute(new Runnable() { @Override public void run() { logger.info("第2个线程"); //完成,计数器减一 cdl.countDown(); } });//等子线程执行完 try { cdl.await(); } catch (Exception e) { logger.error(e.toString()); } cachedThreadPool.shutdown(); return new JsonResult(ResultCode.SUCCESS,"成功"); }
阅读全文