Java Crontab未触发计划作业
我有一个Java程序,可以读取文本文件并按顺序处理它们,在每个文件完成后,邮件会在一个单独的线程中触发(使用runnable)。我在crontab中将这个程序配置为cron作业,每15分钟运行一次 如果上次作业运行的子线程发送电子邮件的时间超过20分钟,则不会触发cron。如何每15分钟触发一次作业,即使最后一个子线程仍在执行 下面是使用的代码:: EpdFeedLoader.java EpdBatchLoader.java SendDelayedFeedJobStatusMail.javaJava Crontab未触发计划作业,java,multithreading,email,Java,Multithreading,Email,我有一个Java程序,可以读取文本文件并按顺序处理它们,在每个文件完成后,邮件会在一个单独的线程中触发(使用runnable)。我在crontab中将这个程序配置为cron作业,每15分钟运行一次 如果上次作业运行的子线程发送电子邮件的时间超过20分钟,则不会触发cron。如何每15分钟触发一次作业,即使最后一个子线程仍在执行 下面是使用的代码:: EpdFeedLoader.java EpdBatchLoader.java SendDelayedFeedJobStatusMail.java 您
您使用的是什么框架?你能发布一些代码吗?user6690200-我已经添加了我使用的代码。到底是什么问题?那个cron不开始新的工作?那么所有的Java代码都是无关的。但是克朗。您的Java代码是否在阻止多个实例运行?cron计划每15分钟运行一次,但在第一个作业中触发的邮件将运行约30分钟,而第二次运行不会启动。我没有做任何代码方面的事情来阻止多个实例运行。有什么关于如何进行的建议吗?
public class EpdFeedLoader {
public static void main(String[] args) throws Exception {
startProcess(feedFile);
}
public static void startProcess(BatchFeedFile feedFile) {
EpdBatchLoader epdBatchLoader = new EpdBatchLoader(feedFile);
epdBatchLoader.execute();
}
}
public class EpdBatchLoader {
private static void sendDelayedFeedEmail(){
SendDelayedFeedJobStatusMail delayedFeedEmail = new SendDelayedFeedJobStatusMail();
delayedFeedEmail.setParameters(//parameters for my email method);
Thread delayedFeedThread = new Thread(delayedFeedEmail);
delayedFeedThread.start();
}
}
public class SendDelayedFeedJobStatusMail implements Runnable {
private MailRequestDTO mailRequestDTO;
public void setParameters(MailRequestDTO mailRequestDTO){
this.mailRequestDTO = mailRequestDTO;
}
public void sendMail() {
boolean isSend = false;
message.setSubject(subject);
message.setSentDate(Utils.getDateInTimeZone(mailRequestDTO.getCountryCode(),new Date()));
message.setContent(mailRequestDTO.getMessageContent(), "text/html");
message.addHeader("Content-Transfer-Encoding", "7bit");
attachInlineImages(message, mailRequestDTO.getInlineImageMap());
ConfigUtils.logger.info("Ready to Send Delayed Feed Receipt Email for Process Code : " + mailRequestDTO.getProcessCode().toString());
Transport.send(message);
isSend = true;
ConfigUtils.logger.info("Delayed Feed Receipt Email Sent Successfully for Process Code : " + mailRequestDTO.getProcessCode().toString());
}
@Override
public void run(){
this.sendMail();
}
}