У меня возникла ситуация, когда мне нужно проверить, выполнено ли какое-либо условие, и его необходимо периодически выполнять определенное количество раз чтобы проверить условие до того, как оно объявит условие, которое не выполнено, и между каждым исполнением должен быть интервал задержки/сна.Как выполнить вызываемое фиксированное число раз и иметь интервал ожидания/задержку между каждым исполнением
Код Структура:
class checkCondition<T> implements Callable<T>{
@Override
public T call() {
//Do Stuff and return result
return result;
}
public class TaskRunner<T> {
private final ExecutorService executor = Executors.newSingleThreadExecutor();
public Future<T> runTask(checkCondiiton task, int times, long sleep){
while(times > 0){
future = executor.submit(task);
Thread.sleep(sleep);
times--;
}
return future;
}
}
}
ли выше реализация правильно? Если нет, пожалуйста, сообщите, что было бы лучше. Я новичок в ExecutorService и Java Concurrency.
Спасибо за ваш ответ. Важно, чтобы я вернул будущее, могу ли я сделать это с помощью вызываемого? – dracoorlock
Я чувствую, что вы можете иметь общую ConcurrentHashMap и позволить всем потокам сбрасывать свои результаты с помощью своего идентификатора (или любого уникального идентификатора, который вы назначаете объектам. После освобождения latch.wait() вы можете получить результаты. Нет , вы не можете сделать это с помощью Callable – Maas