我有一个旧应用程序,它有一个每天执行的机器人线程。我有机器人的来源,但我不知道这个胎面是如何开始的。还有一个日志,包括数据库中的一行,有时包括两行相同的行,证明该过程正在执行加倍。
我们使用Windows Server 2003
public void run()
{
while (true)
{
starter();
try {
Thread.sleep(10800000L);
}
catch (InterruptedException localInterruptedException)
{
}
}
}
我需要让它不止一次执行。
我是新人,不是真正得到一个主题的作品......
提前谢谢大家......
答案 0 :(得分:0)
你并没有真正提供很多信息,但这里有一些猜测:
starter()
几乎同时被调用两次的原因。答案 1 :(得分:0)
public void run()
{
int delay = 86400000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
starter();
}
};
new Timer(delay, taskPerformer).start();
}
或者...
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class DailyTask extends TimerTask {
@Override
public void run() {
//Or if you use a logger like log4j you can insert logger code here.
System.out.println("Start:" + new Date());
starter();
System.out.println("End:" + new Date());
}
public static void main(String args[]) {
TimerTask tt= new DailyTask();
// running timer task as daemon thread
Timer t = new Timer(true);
t.scheduleAtFixedRate(tt, 0, 86400000);
System.out.println("DailyTask started:" + new Date());
}
}
这应该每24小时运行一次starter()。