我有这个问题:
我有一些线程使用synchronized(Object) { ... }
但有时提出这个例外:
执行:java.util.concurrent.RejectedExecutionException
为什么呢?我应该怎么做呢?
由于
答案 0 :(得分:2)
该异常是由Executor.execute
引发的 - 你当然不应仅仅通过访问同步块中的对象来看到它。
查看堆栈跟踪的其余部分,以确切了解其发生的位置,并查看消息,看看是否能够提供有关您获取它的原因的更多信息。正如托德评论的那样,通常是由于完整的工作队列。
例如,如果队列用于缓冲要运行的任务,则ThreadPoolExecutor
将抛出此异常,拒绝接受更多项。这通常表示您的系统过载,或者您错误配置了执行程序。