关于遇到java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask
·
此问题承接上篇socket文档。
https://blog.csdn.net/FloatFei/article/details/152208157?spm=1001.2014.3001.5502
创建如下线程池:
private fun createThreadPoolExecutor(): ThreadPoolExecutor {
return ThreadPoolExecutor(
10, 15,
15L, TimeUnit.SECONDS,
SynchronousQueue()
)
}
出现场景: 在app中使用了线程池,在车机系统自动切换主题时导致此问题,从日志中来看当前常驻线程为3且线程池未close,非常奇怪,当前没有深究到底是何原因触发此问题,有大佬知道可以留言下。
我这边目前是这么解决的,其中delayRunTask为重新执行任务
private fun submitTask(runnable: Runnable): Future<*>? {
val task = try {
executorService.submit(runnable)
} catch (e: RejectedExecutionException) {
executorService = createThreadPoolExecutor()
delayRunTask(runnable)
null
}
return task
}
private fun delayRunTask(runnable: Runnable) {
scheduledExecutorService.schedule({
try {
executorService.submit(runnable)
} catch (e: RejectedExecutionException) {
e.printStackTrace()
}
}, 1200, TimeUnit.MILLISECONDS)
}
private val scheduledExecutorService: ScheduledExecutorService =
Executors.newScheduledThreadPool(1)
目前不知道有啥更好的办法来处理此问题,若有大佬有思路或者有解决方法可以留言哈。
更多推荐

所有评论(0)