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