如果您有通过scheduleAtFixedRate提交的执行者服务,例如此
public void methodName() {
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//do some operations
//getSomeResults()
}
}, x, y, TimeUnit.SECONDS);
}
是否可以加入另一个负责getSomeResults()的线程?例如,我希望线程在继续之前等待getSomeResults()完成 - 这可能吗?
由于
答案 0 :(得分:0)
是的,您想提交FutureTask
而不是Runnable
。 (FutureTask
是Runnable
,因此您无需更改任何其他内容。)
如果你创建一个FutureTask
,那么你可以让另一个线程调用它的.get()
方法,该方法将阻塞直到任务完成,并且它将返回结果。
(最简洁的方法是完全摆脱getSomeResults()
方法,只使用get()
FutureTask
方法;但没有什么可以阻止你更多地删除代码或尽管不是这样,只是使用get()
作为一种阻止方式,如果你想先尝试检查它是否全部正常工作。)