如果我使用Executors.newSingleThreadExecutor()
来获取ExecutorService
,我可以设置执行每个Runnables的超时时间吗?如果没有,是否有默认值?或者如果其中一个runnable需要很长时间才能执行,那么Thread会被阻塞吗?
我已经阅读了android文档,但我并不完全清楚(来自Executors.newSingleThreadExecutor() Android参考资料):
创建一个Executor,它使用一个在无界队列中运行的工作线程。 (但请注意,如果此单个线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新的线程。)保证任务按顺序执行,并且不会有多个任务处于活动状态在任何给定的时间。与其他等效的newFixedThreadPool(1)不同,保证返回的执行程序不可重新配置以使用其他线程。
答案 0 :(得分:0)
它是什么类型的Runnable? AFIK,如果它不是Future,那么你就不能设置超时。您可能还会混淆ThreadPoolExecutor上设置的超时(池中杀死空闲线程的时间,以便返回核心池大小)与单个任务的执行时间相混淆。