Future到底是干什么的?
我一个线程开了100个线程去执行任务。现在,我想在执行一段时间之后就返回结果或者有一个线程执行出错,就终止所有的线程。
我的回答,线程之间的通知,那肯定需要一个全局的通知变量,volatile状态标记。怎么超时之后,返回结果这个没有明了。问题有点开放。
1:ElasticSearch里面是提供了这种机制的,先说场景,一个搜索过去,到各个分片,可能执行的时间有点长,不影响前端的展示效果,设置一个timeout参数即可。但是,这种机制是怎么实现的呢?可以先举例场景。
2:我大概说future.get线程的执行结果。Future到底是什么?可以说什么都不是!就是我开启一个子线程去执行任务,我主线程继续向下执行,当我需要子线程的结果的时候,我future.getRequest()即可。如果,我直接就要结果,那这模式就不适合,就是在这里阻塞等结果的。
就这 阻塞等结果至于到时间就返回了结果,这是怎么实现的?
好像也只能这样,有什么技巧吗?
网友评论