【发布时间】:2012-04-16 23:20:57
【问题描述】:
我需要在不阻塞当前方法的情况下运行一段时间后运行一些代码。
我尝试了以下两种方法:
public static void main(final String[] args) {
System.out.println("Start");
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("done");
this.cancel();
}
}, 4000L);
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(new Runnable() {
public void run() {
System.out.println("done");
}
}, 2, TimeUnit.SECONDS);
executor.shutdown();
System.out.println("Stop");
}
问题是第一个确实阻止了应用程序,第二个不允许 main 退出,直到它完成;
如何在一段时间后运行代码并在调度后立即退出当前方法?
【问题讨论】:
-
你想做什么?第二种方法将异步运行,即不会阻塞您的方法!
标签: java timer scheduled-tasks task