Java: synchronized (Object) и RejectedExecutionException - PullRequest
1 голос
/ 22 декабря 2009

У меня есть эта проблема:

У меня есть несколько потоков, которые обращаются к одному объекту с помощью synchronized(Object) { ... }

Но иногда возникает это исключение:

выполнить: java.util.concurrent.RejectedExecutionException

Почему? И что мне с этим делать?

Спасибо

1 Ответ

2 голосов
/ 22 декабря 2009

Это исключение должно вызываться Executor.execute - вы, конечно, не должны видеть его, просто обращаясь к объектам в синхронизированном блоке.

Посмотрите на остальную часть трассировки стека, чтобы точно определить, где она происходит, и посмотрите на сообщение, чтобы узнать, дает ли оно вам больше информации о том, почему вы его получаете. Как заметил Тодд, это обычно происходит из-за чего-то вроде полной рабочей очереди.

Например, ThreadPoolExecutor сгенерирует это исключение, если очередь используется для буферизации выполняемых задач, отказывается принимать больше элементов. Обычно это означает, что ваша система перегружена или вы неправильно настроили исполнителя.

...