我正在尝试创建一个模块,将Callable
提交到ExecutorService
并等待响应。如果callable返回null
,则此线程将暂停,直到调用resume()
为止。否则它将处理结果并再次重新提交相同的任务。
public class ScheduleManager implements Runnable {
private ExecutorService executor = Executors.newSingleThreadExecutor();
@Override
public synchronized void run() {
while (true) {
Future<Schedule> future = executor.submit(new ScheduleRetriever());
try {
Schedule schedule = future.get();
if (schedule == null) {
this.wait();
} else {
//Do something with the schedule
}
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
public synchronized void resume() {
this.notifyAll();
}
}
我设法提出了上述解决方案,但我不确定它的可靠性。
有没有更好地做到这一点?