从Java线程中运行计时器

时间:2014-01-30 12:31:47

标签: java multithreading timer counter

我会链接每隔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");

    }
}

任何帮助都将不胜感激。

1 个答案:

答案 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。你能澄清一下吗?干杯