这是否可以将多个 Runnable 对象排队等待在一个线程中执行?不使用 ExecutorService 怎么办?如果其中一个 Runnable 对象抛出未经检查的异常会发生什么,它会停止执行线程吗?
问问题
73 次
3 回答
1
这是否可以将多个 Runnable 对象排队等待在一个线程中执行?
使用 ExecutorService。
不使用 ExecutorService 怎么办?
使用阻塞队列和线程。
如果其中一个 Runnable 对象抛出未经检查的异常会发生什么,它会停止执行线程吗?
这取决于你,因为你必须自己写。
对于 ExecutorService,抛出的 Throwable 被添加到 Future 对象中供您检查。很容易忘记这样做,在这种情况下,您需要向 Runnable 添加一个 try/catch 块。
于 2012-08-30T07:48:30.440 回答
1
是否有不使用 ExecutorService 的特定原因?它提供了一个在一个线程中工作的实现:Executors.newSingleThreadExecutor()
于 2012-08-30T07:48:52.513 回答
0
有可能的。打开一个侦听队列的线程,每次它看到一个项目时,它就会去队列并运行它。您可以将任务的执行包装在 try catch 块中,从而允许工作线程继续工作,即使其中一个任务引发了异常。
话虽如此 - 以上正是 ThreadPoolExecuter 所做的,那么您为什么不想使用它呢?(在家工作?)
于 2012-08-30T07:48:52.677 回答