Я использую несколько сервисов, унаследованных от AbstractScheduledService
, которыми управляет ServiceManager
.Все работает нормально, но теперь есть служба, для которой runOneIteration
занимает довольно много времени, и в результате мой процесс завершается слишком долго (более пяти секунд).
Существуют другие службы, наследующиеиз AbstractExecutionThreadService
, в которой была похожая проблема, которую я мог решить с помощью
@Override
protected final void triggerShutdown() {
if (thread != null) thread.interrupt();
}
и сохранением private volatile thread
в методе run
.Однако triggerShutdown
для AbstractScheduledService
, как указано в этой проблеме .
, я уже рассматривал альтернативы, такие как runOneIteration
, выполняющий меньше работы, но он уродлив и неэффективен.
Я не могу переопределить stopAsync
, так как он окончательный и больше ничего не вижу. Есть ли ловушка для того, чтобы делать что-то подобное?