我有2个代码片段,一个使用ScheduledExecutorService在特定时间执行一个线程,另一个使用Timer在特定时间执行TimerTask。问题是使用ScheduledExecutorService时,即使线程的run()达到最后,监视器程序仍然指示它仍然存在(参见下图)。另一方面,TimerTask在执行完成后结束其线程。ScheduledExecutorService不会像Timer一样结束线程
我已将ScheduledExecutorService的Thread更改为TimerTask,但收到相同的结果。如何在使用ScheduledExecutorService时解决问题?
计时器:
TimerTask task = new TimerTask()
{
@Override
public void run()
{
System.out.println("doing something");
}
};
Timer t = new Timer();
t.schedule(task, 250);
ScheduledExecutorService的:
Thread task = new Thread()
{
@Override
public void run()
{
System.out.println("doing something");
}
};
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.schedule(task, 250, TimeUnit.MILLISECONDS);
您不提交线程到执行程序服务,您提交runnables。 –