RejctedExecutionException的原因是什么?

时间:2014-10-04 02:45:10

标签: java android multithreading

除了先前在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)

1 个答案:

答案 0 :(得分:3)

请参阅http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html

您的ThreadPoolExecutor已关闭,或

ThreadPoolExecutor具有有限数量的线程,或者工作队列具有有限容量且已满(例如,传递给ThreadPoolExecutor构造函数的有限容量的LinkedBlockingQueue)。