У меня есть 2 задачи с использованием аннотации Spring @Scheduled
@Scheduled(initialDelay = 5000, fixedDelay = 15000)
public void diffuserProchainADiscuter() {
helper.waitAndFusionne(aTraiter);
// some other stuff
}
и
@Scheduled(initialDelay = 14, fixedRate = 30)
public void diffuserAmdtsEtTextes() {
// more stuff
}
В классе Helper у меня есть вызываемый метод, который содержит:
private static BlockingQueue<InfoVote> infosDernierVote = new LinkedBlockingQueue<InfoVote>();
public static void waitAndDrainInfoDernierVote(Collection<InfoVote> infoVotes) throws InterruptedException{
//noinspection EmptyCatchBlock
if (infoVotes.size() == 0) infoVotes.add(infosDernierVote.take());
infosDernierVote.drainTo(infoVotes);
}
Код работает на сервере Tomcat 7 в CentOS.
Когда я запускаю сервер, diffuserProchainADiscuter () выполняется один раз, а затем diffuserAmdtsEtTextes () запускается и никогда не возвращается, потому что infosDernierVote пусто, поэтому задача ожидает вставки некоторых данных в BlockingQueue. Странное поведение в том, что другое запланированное задание не выполняется снова, и я не понимаю, почему. Когда я комментирую helper.waitAndFusionne(aTraiter);
, другая задача выполняется нормально каждый раз, когда она должна. Чего мне не хватает?