Я пытаюсь создать модуль, который отправит Callable
на ExecutorService
и ожидает ответа.Если вызываемый возвращает 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();
}
}
Мне удалось найти решение, описанное выше, но я не уверен, что его надежность.
Есть ли что-то еще сделатьэто лучше?