我想让线程在特定的确切时间执行(例如:2012-07-11 13:12:24 和 2012-07-11 15:23:45)
我检查了ScheduledExecutorService
,但它只支持在第一次运行后的特定时间段后执行,而且我没有任何固定时间段,而是有时间从数据库执行任务。
在上一个针对不同问题的问题中here https://stackoverflow.com/questions/11361332/how-to-call-a-method-on-specific-time-in-java,TimerTask 是解决方案,但显然我无法使线程成为TimerTask
as Runnable
and TimerTask
两者都有方法run
这需要实施。这里的问题是我是否让线程延伸TimerTask
并有一个实现run()
,这样行吗?
如果没有,那么怎么可能做我想做的事呢?
使用定时器任务。
创建一个带有字段变量的 TimerTask 对象作为您的线程。
从定时器任务的 Run 方法中调用线程启动。
public class SampleTask extends TimerTask {
Thread myThreadObj;
SampleTask (Thread t){
this.myThreadObj=t;
}
public void run() {
myThreadObj.start();
}
}
像这样配置它。
Timer timer new Timer();
Thread myThread= // Your thread
Calendar date = Calendar.getInstance();
date.set(
Calendar.DAY_OF_WEEK,
Calendar.SUNDAY
);
date.set(Calendar.HOUR, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
// Schedule to run every Sunday in midnight
timer.schedule(
new SampleTask (myThread),
date.getTime(),
1000 * 60 * 60 * 24 * 7
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)