Я использую java.util.Timer , чтобы запланировать периодическое задание. В какой-то момент я бы хотел выключить его и дождаться, пока он завершит .
Timer.cancel () предотвратит запуск любых будущих задач. Как мне убедиться, что какие-либо задачи не выполняются в данный момент (или подождать их, если они есть?)
Я могу представить внешние механизмы синхронизации, но я не понимаю, как они могут охватывать все случаи. Например, если я выполняю синхронизацию на каком-либо мониторе в рамках задачи, я все равно упускаю случай, когда задача только начала выполняться, но не заняла монитор.
Какова рекомендуемая практика ожидания, пока все задачи действительно не будут выполнены, включая запущенные в данный момент?