我在java中有一个应用程序,我需要在给定的延迟后安排命令运行,我应该使用Timer或ThreadPool以及为什么?
答案 0 :(得分:2)
我建议您使用ScheduledExecutorService
。基本原理: 比Timer
或TimerTask
更容易。
您可以使用Executors.newScheduledThreadPool()
来获取一个。
答案 1 :(得分:2)
如果您使用的是Spring,则另一种解决方案是@Scheduled
。只需使用该注释注释所需方法,并指定要调用的延迟或特定时间。优点是您不需要实现Runnable的新类,并且需要关注多个线程(尽管Executors框架易于使用)。但是你需要具有带注释的方法的类是Spring Bean;此方法还需要返回void并且没有参数。
实际上这很简单:
@Scheduled(fixedRate = 5000)//the method is called once every 5 seconds
public void myScheduledMethod() {
//do you stuff
}