我有2个使用Spring @Scheduled批注的任务
FROM python:3.6-slim
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONBUFFERED 1
RUN mkdir /back
COPY requirements.txt /back/
RUN pip install -r /back/requirements.txt
COPY . /back/
和
@Scheduled(initialDelay = 5000, fixedDelay = 15000)
public void diffuserProchainADiscuter() {
helper.waitAndFusionne(aTraiter);
// some other stuff
}
在Helper类中,有一个包含以下内容的被调用方法:
@Scheduled(initialDelay = 14, fixedRate = 30)
public void diffuserAmdtsEtTextes() {
// more stuff
}
代码在CentOS的Tomcat 7服务器上运行。
启动服务器时,将执行一次differiderProchainADiscuter(),然后启动differiderAmdtsEtTextes(),并且再也不会返回,因为infosDernierVote为空,因此任务正在等待将某些数据插入到BlockingQueue中。奇怪的行为是另一个计划任务没有再执行,我不明白为什么。当我注释掉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);
}
时,其他任务每次都应该执行得很好。我想念什么?