Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何在特定的时间间隔后调用方法_Java_Timer - Fatal编程技术网

在Java中,如何在特定的时间间隔后调用方法

在Java中,如何在特定的时间间隔后调用方法,java,timer,Java,Timer,以下是用例: 我正在使用Java(与Spring一起使用) 一旦用户(通过web应用程序)确认订阅,我想在30分钟后给他发送一封电子邮件 现在怎么做呢?我需要消息代理吗?或者类似ScheduledExecutorService的东西? 我需要排队吗 请告知。可以对此进行调查 顺便说一下,一个常见的策略是每30分钟左右发送一次大量的所有待处理邮件。石英也可以帮助您实现这一点。您可以使用。它相当容易使用。你可以每周或每30分钟安排一些事情,或者你基本上想要的任何事情。这并不是说发送邮件后线程会消失。

以下是用例:

我正在使用Java(与Spring一起使用)

一旦用户(通过web应用程序)确认订阅,我想在30分钟后给他发送一封电子邮件

现在怎么做呢?我需要消息代理吗?或者类似ScheduledExecutorService的东西? 我需要排队吗

请告知。

可以对此进行调查


顺便说一下,一个常见的策略是每30分钟左右发送一次大量的所有待处理邮件。石英也可以帮助您实现这一点。

您可以使用。它相当容易使用。你可以每周或每30分钟安排一些事情,或者你基本上想要的任何事情。

这并不是说发送邮件后线程会消失。配置Quartz时,将自动创建一个新线程,并在指定的时间间隔内执行分配的任务。或者也可以使用Timer类。它很容易使用

    Timer timer = new Timer(); // Get timer

    long delay = 30 * 60 * 1000; // 3o min delay

    // Schedule the two timers to run with different delays.
    timer.schedule(new MyTask(), 0, delay);

...................



class MyTask extends TimerTask {

    public void run() {
        // business logic
        // send mail here
    }
}

为计时器创建一个对象

 private Timer myTimer;
主要方法

myTimer = new Timer();
    myTimer.schedule(new TimerTask() {
        @Override
        public void run() {
           //your method
        }

    }, 0, 200);

我认为一个更好的标题可以是
“如何发送邮件,活动后30分钟。”
如果您已完成我的id,请将您的代码发送给我manisathasivam@gmail.comthanks,但实际情况如何?我假设每次事件发生时,都会创建一个新线程,等待30分钟,然后发送邮件,然后死亡,这是对的吗?我们可以使用ScheduledExecutorService进行此操作吗?@adi我不确定Quartz的确切内部工作原理,但请放心,它非常高效。。。我用它来推动数千个工作岗位,而没有任何明显的资源消耗。就具体的邮寄工作而言。。。我想石英会很好的。我从未使用过ScheduledExecutorService,因此无法对其进行真诚的评论。如果发送邮件后线程没有死掉,那么线程会发生什么情况?一段时间后,我会有数百个线程吗?一个单独的线程将运行,并且在时间滴答的时候任务将被执行。当您创建计时器并对其进行调度时,它会在后台运行,并在指定的时间间隔后执行任务。尝试以下示例公共类Main{public static void Main(String[]args){Timer Timer=new Timer();long delay=1000;//1秒延迟Timer.schedule(new MyTask(),0,delay);而(true){}}}}}}public类MyTask扩展TimerTask{public void run(){//business logic System.out.println(“已发送邮件”);}}}效果很好,但是如果我需要更改时间怎么办?例如,我希望延迟时间在两倍的范围内。