相关疑难解决方法(0)

等待Timer在Java中完成

我正在使用java.util.Timer来安排定期任务.有一次,我想关闭它,等待它完成.

Timer.cancel()将阻止任何未来的任务运行.我如何确保当前没有任何任务正在运行(如果是的话,还是等待它们?)

我可以引入外部同步机制,但我不知道它们如何涵盖所有情况.例如,如果我在任务中的某个Monitor上进行同步,我仍然会错过任务刚刚开始执行但没有使用监视器的情况.

等待所有任务真正完成的建议做法是什么,包括当前正在运行的任务?

java synchronization timer monitor

12
推荐指数
1
解决办法
2万
查看次数

Java:在继续执行之前等待TimerTask完成

我有一个烦人的问题.现在,我有一段代码片段启动一个线程,在该线程中设置一个计时器,然后退出该线程并继续其生命.我的目的是让程序在继续代码流之前等待TimerTask完成.但是,显然,设置新的TimerTask不会暂停执行以等待定时器运行.

如何设置它以便我的代码到达TimerTask,等待TimerTask过期,然后继续?我是否应该使用计时器?我到处寻找解决方案,但我似乎找不到一个.

timer = new Timer();
    Thread t = new Thread(new Runnable(){
        boolean isRunning = true;
        public void run() {
            int delay = 1000;
            int period = 1000;
            interval = 10;
            timerPanel.setText(interval.toString());

            //Scheduling the below TimerTask doesn't wait
            //for the TimerTask to finish before continuing
            timer.scheduleAtFixedRate(new TimerTask() { 

                public void run() {
                    timerPanel.setText(setInterval().toString());
                }
            }, delay, period);

            System.out.println("Thread done.");
        }
    });
    t.start();

    try {
        t.join(); //doesn't work as I wanted
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    endTask();
Run Code Online (Sandbox Code Playgroud)

提前致谢.

编辑:对于重复任务的混乱感到抱歉.我需要重复该任务,因为它是一个倒数计时器,每秒从10脉冲到0脉冲.函数setInterval()最终取消计时器.这是相关的代码: …

java concurrency multithreading timer timertask

1
推荐指数
1
解决办法
7730
查看次数