第三方系统提供的接口不支持批量接收数据, 只能一笔一笔的调用,我们有1000多条数据,就得请求1000次这个接口, 效率很是低下! 所以我想利用多线程的方式快速的调用完这1000次接口请求并处理响应(前端调用我这个接口 我立马返回结果了,因为是多线程异步处理,执行完后 前端再查一下结果!)
还有个要求就是 这1000笔执行完成后 调用一个发送短信接口! 然而我通过future.get()来搞(每次接口调用成功返回我都add到List中,最终判断List的size是否是我那1000笔一致,如果一致那么就说明线程执行完毕),结果阻塞了主线程,变成同步了,前端一直得不到响应, 有没有啥好的办法,既让他不阻塞主线程又能知道线程执行完毕!?
用CountDownLatch:
或者用CompletableFuture.allOf。
你理解的没问题用CompletableFuture.runAsync(Runnable runnable, Executor executor)这个方法。这样可以用你自己的线程池来执行这些异步任务:
Java CompletableFuture 的官方文档