如何每隔10秒调用一次特定的方法?

时间:2016-09-20 08:28:52

标签: java timer schedule

我想每隔5秒调用一次方法, 我使用了计时器,但我不知道如何正确使用它。

我在一个CountryDTO课程中有一个方法,如下所示。

public MoviesDTO getMovieDTOByName(String movieName) {
        Session session = factory.openSession();
        String hql = "FROM MoviesDTO WHERE name=:nm";
        Query query = session.createQuery(hql);
        query.setParameter("nm", movieName);
        return (MoviesDTO) query.uniqueResult();
    }

我从主方法中调用它。如下所示:

public static void main(String[] args) {
        Timer timer = new Timer();
        CountryDAO countryDAO = new CountryDAO();

        timer.schedule(countryDAO.getMovieDTOByName("Rabgo"), 5000);

    }

但是,我得到的是以下异常:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method schedule(TimerTask, long) in the type Timer is not applicable for the arguments (MoviesDTO, int)

3 个答案:

答案 0 :(得分:1)

使用Timer不是一个好主意。如果您使用jdk 1.5或更高版本,请改用ScheduledThreadPoolExecutor
doc:https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html

原因:

Java Timer vs ExecutorService?

答案 1 :(得分:0)

日志中显示有编译错误。方法schedule需要2个参数(TimerTasklong)而不是您提供的(MoviesDTOint)。

看看How to set a timer in Java(在你的帖子评论中被Masked Man提到)以获得解决方案

答案 2 :(得分:0)

有很多Quartz scheduler这样的第三方jar可用于Java。这种jar在内部为我们处理了所有必需的调度过程,我们可以专注于调度程序的业务逻辑。

Quartz基本上用于处理Java中的复杂计划。 在这种情况下,您必须了解cronjob。

您也可以参考CronMaker

(注意:-这只是对您的建议。如果您的调度过程花了很多时间来处理,并且您偏离了用例,那么您可以继续执行此建议。)