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