Java Crontab未触发计划作业

Java Crontab未触发计划作业,java,multithreading,email,Java,Multithreading,Email,我有一个Java程序,可以读取文本文件并按顺序处理它们,在每个文件完成后,邮件会在一个单独的线程中触发(使用runnable)。我在crontab中将这个程序配置为cron作业,每15分钟运行一次 如果上次作业运行的子线程发送电子邮件的时间超过20分钟,则不会触发cron。如何每15分钟触发一次作业,即使最后一个子线程仍在执行 下面是使用的代码:: EpdFeedLoader.java EpdBatchLoader.java SendDelayedFeedJobStatusMail.java 您

我有一个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();
    }
}