我会链接每隔5秒从我的线程中执行一个方法。我班的大纲如下。
private static Timer timer = new Timer();
public class myThread implements Runnable {
public void run() {
//listens for incoming messages
while(true) {
//process queue
timer.schedule(new TimerTask() {
process_queue();
}, 5*1000);
}
}
public static void process_queue() {
//processes queue
System.out.println("boom");
}
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
所以你的代码存在问题:
//listens for incoming messages
while(true) {
//process queue
timer.schedule(new TimerTask() {
process_queue();
}, 5*1000);
}
是它将安排无限制的任务 - 这是产生任务的无限循环,所有任务将在5秒后运行。
尝试这样的事情:
public void run() {
//listens for incoming messages
while(true) {
process_queue();
sleep(5000); //watch out for Exception handling (i.e. InterruptedException)
}
}
虽然在今天的软件开发趋势中,您希望避免blocking
等待(即sleep()方法阻止当前线程)。见Akka演员 - http://akka.io/
你也说你想每5秒运行一次方法,但need to be able to constantly listen for incoming messages
。你能澄清一下吗?干杯