0

这是否可以将多个 Runnable 对象排队等待在一个线程中执行?不使用 ExecutorService 怎么办?如果其中一个 Runnable 对象抛出未经检查的异常会发生什么,它会停止执行线程吗?

4

3 回答 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 回答