У меня есть ReentrantReadWriteLock в моем приложении. В методе запуска задачи таймера я пишу блокировку, а затем вызываю функцию. После этого я разблокирую:
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
lock.writeLock().lock();
function();
lock.writeLock().unlock();
}
}, 0, 1000); // prints 1 every 1second
Меня беспокоит то, что произойдет, если этот таймер будет отменен, и замок не сможет открыться. Есть ли способ сделать так, чтобы вызов .cancel останавливал таймер только после выполнения текущей итерации.
Или есть другая структура данных, которую я мог бы использовать, которая позволяет мне в отдельном потоке запускать задачу/функцию с определенной скоростью и иметь возможность остановить ее, чтобы снять все блокировки?
cancel
должно быть таким, как вы ожидали, прочитайте документ Java - person samabcde   schedule 27.11.2019