【发布时间】:2018-07-13 11:59:31
【问题描述】:
我是 Java 多线程的新手,我刚刚实现了 Timer 类以在特定的间隔时间执行方法。
这里是我的代码:
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new MyTimerTask(), 3000);
//execute this code after timer finished
System.out.println("finish");
}
private static class MyTimerTask extends TimerTask {
@Override
public void run() {
System.out.println("inside timer");
}
}
但是输出是这样的:
finish
inside timer
我想要这样:
inside timer
finish
那么如何等待计时器线程完成然后在主线程中继续执行代码?有什么建议吗?
【问题讨论】:
-
如果您确实需要后台线程,请不要使用计时器。相反,只需调用
Thread.sleep(...)。否则,如果您仍想做后台线程,则在 Timer 或由 Timer 触发的回调中调用"finish"inside。 -
使用
CountLatch或其他类型的Semaphore或Object监视器
标签: java multithreading