如何使用java在服务器端实现倒计时触发器?

如何使用java在服务器端实现倒计时触发器?,java,timer,countdown,Java,Timer,Countdown,像quibids和ebay这样的竞价网站有一个倒计时,显示出还有多少时间可以进行竞价。我知道这可以在FE上处理,应该相当容易。我想知道的是如何在服务器端执行此操作?比如向参与但未获胜的人发送电子邮件,并在时间到时更新数据库。我考虑过两种方法来实现这一点 将计时器保持在客户端,并在第一个请求到达时进行更新 打开一个新线程,让它睡眠x个时间,然后醒来进行更新。 这两种方法听起来都不对,我认为会导致一些问题。比如,用户可能无法及时获得更新,或者服务器上会有很多睡美人在等待 我想知道的是如何在服务器端执

像quibids和ebay这样的竞价网站有一个倒计时,显示出还有多少时间可以进行竞价。我知道这可以在FE上处理,应该相当容易。我想知道的是如何在服务器端执行此操作?比如向参与但未获胜的人发送电子邮件,并在时间到时更新数据库。我考虑过两种方法来实现这一点

将计时器保持在客户端,并在第一个请求到达时进行更新 打开一个新线程,让它睡眠x个时间,然后醒来进行更新。 这两种方法听起来都不对,我认为会导致一些问题。比如,用户可能无法及时获得更新,或者服务器上会有很多睡美人在等待

我想知道的是如何在服务器端执行此操作?就像送一封信 向参与但未获胜的人员发送电子邮件,并在 时间到了

最佳方式可能因服务器端的技术堆栈而异

如果您是从Servlet容器运行的,例如:Tomcat、Jboss…,那么您 可能想做类似的事情:

如果您运行的是Spring应用程序,例如Spring Boot或Spring MVC,那么我建议使用@Scheduled或other

对于高级方案,您可能希望使用


另外,您应该尝试将它与

连接起来,以调度任务,使用ScheduledExecutorService。

Java有计时器,示例如下:这里:是的,我知道。这是我的第二个要点中的方法,但正如我所说的,这最终会导致服务器上出现大量休眠线程,我认为这并不理想?一旦服务器重新启动,它们就会消失