0

我需要有一个后台线程,它不断地做一个动作,睡X几秒钟然后做动作等等。
基本上这个run方法是这样的:

while(!isInterrupted()){  
   //do something  
   Thread.sleep(10);  
}  

我的问题是:

  1. 在这种情况下使用执行器有意义吗?由于我没有产生线程,即使在这种情况下使用执行器(单线程)更好?
  2. 此外,如果我想保证线程在do something10 秒内进入零件,是否可以通过仅使用自定义线程或通过执行程序保证更多?我的意思是,如果我有 10 秒的硬性限制来执行一个动作,我能做些什么来实现它?我假设代码返回的时间do something可能会因调度等原因而波动。我怎么能得到这样的保证?
4

1 回答 1

3

如果您只使用一个像您一样永远运行的任务的线程,那么您可以使用您当前的逻辑。

但只有当你有一些小任务需要运行时,才有意义使用 SingleThreadPool。

我怎么能得到这样的保证?

操作系统端(Linux 或 Windows)没有这样的保证,即线程将在 10 秒后从睡眠中返回。尝试增加线程优先级,但这也不能保证有效。

您的逻辑不应依赖于 IMO 如此艰难的时间安排。

于 2013-02-19T06:28:47.017 回答