【发布时间】:2012-10-15 13:11:55
【问题描述】:
为什么我们在这个例子中看不到堆栈跟踪?
public class NoStackTraceTester implements Runnable {
private static final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
private ScheduledFuture<?> lifeCheckFuture;
@Override
public void run() {
lifeCheckFuture = startLifecheck();
}
private ScheduledFuture<?> startLifecheck()
{
Runnable lifeCheck = new Runnable()
{
@Override
public void run()
{
System.out.println("sending lifecheck ...");
throw new RuntimeException("bang!");
}
};
return scheduler.scheduleAtFixedRate(lifeCheck, 1000, 1000, TimeUnit.MILLISECONDS);
}
public static void main(String[] args) {
new NoStackTraceTester().run();
}
}
如果您尝试注释异常,您将执行 lifecheck 函数的重复任务。 但是如果抛出异常,线程会停止但没有细节:(
你知道为什么吗?
【问题讨论】:
-
是否只发生在预定的执行器服务上?您是否尝试过将任务提交给单线程执行器?
标签: java exception-handling scheduled-tasks