Вопрос о ScheduledExecutorService.shceduleAtFixedRate
- я планирую taskA
запускать каждые 500 миллисекунд, что блокирует 1000 миллисекунд.Теперь последующие казни не будут ждать дополнительных 500 миллисекунд, а начнутся сразу же после предыдущего.
taskA
получает внутреннюю блокировку, которая также (попытается) приобретается другим потоком.Поскольку внутренние блокировки не имеют справедливости, гарантируют, что этот поток подвергается риску голодания, поэтому вот мой вопрос: существует ли хороший / чистый способ избежать этого риска?Например, запланировать выполнение задачи каждые 1500 миллисекунд (звучит не очень хорошо)?Или мы ожидаем, что приобретение замка продемонстрирует своего рода «амортизированную справедливость»?