除了先前在Executor上调用的shutdown()
之外还有抛出RejectedExecutionException的其他原因吗(我使用的是singleThreadExecutor)?我有一些崩溃报告如下。它们非常罕见,我无法在我的设备上重现。我的代码太复杂而无法发布,但我没有看到在调用shutdown()
之后提交任何任务的逻辑可能性。
还有其他原因可以抛出RejectedExecutionException吗?
java.util.concurrent.RejectedExecutionException:Task java.util.concurrent.FutureTask@4194a5f0拒绝了 java.util.concurrent.ThreadPoolExecutor@41a36e90 [已终止,池大小 java.util.concurrent.ThreadPoolExecutor $ = 0,活动线程= 0,排队任务= 0,已完成任务= 9813] $ AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1979) 在 java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:786) 在 java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1307) 在 java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:81) 在 java.util.concurrent.Executors $ DelegatedExecutorService.submit(Executors.java:562) 在 com.smp.soundtouchandroid.AACFileAudioSink.write(AACFileAudioSink.java:28) 在 com.smp.soundtouchandroid.SoundStreamRunnable.processChunk(SoundStreamRunnable.java:469) 在 com.smp.soundtouchandroid.SoundStreamRunnable.processFile(SoundStreamRunnable.java:406) 在 com.smp.soundtouchandroid.SoundStreamRunnable.run(SoundStreamRunnable.java:223) 在java.lang.Thread.run(Thread.java:856)
答案 0 :(得分:3)
请参阅http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html
您的ThreadPoolExecutor已关闭,或
ThreadPoolExecutor具有有限数量的线程,或者工作队列具有有限容量且已满(例如,传递给ThreadPoolExecutor构造函数的有限容量的LinkedBlockingQueue)。