Java многопоточность: остановить предыдущее выполнение и начать новое - PullRequest
3 голосов
/ 04 апреля 2020

У меня есть блок кода, который должен выполняться только одним потоком за раз. Если в этот блок приходит новый поток - он должен отменить предыдущее выполнение и начать новый.

Примером является кэш обновления:

public void refreshCache() {
    //refresh cache can take up to 20 minutes
}

Конечно, я могу запустить это с CompletableFuture, сохранить Future в AtomicReference и отменить его, когда появится новый поток , Но это единственный вариант, который я имею в виду.

Существуют ли передовые методы работы с такими случаями? Каким будет решение, если я хочу запустить несколько экземпляров службы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...