kbMemTable является хорошим кандидатом. Выполнения в памяти, быстро, multi-threadding. Используемый, чтобы быть свободным.
Вам нужно будет предоставить образцы кода того, как вы создаете экземпляр и вызываете submit
в пуле (IP не должен быть проблемой, поскольку нам не нужны подробности внутренних компонентов ваших Callable
классов или чего-то в этом роде).
Основываясь на предоставленной вами информации, вы почти наверняка где-то закрываете службу исполнителя, прежде чем отправлять ему вызываемый объект. Проверьте, выполняете ли вы какие-либо вызовы к shutdown
или shutdownNow
, и если да, убедитесь, что вы не добавляете задачи после этого момента.
Кроме того, вы можете зарегистрировать свой собственная реализация java.util.concurrent.RejectedExecutionHandler
для помощи в отладке;
Я не вижу нигде в вызове методов Executors.newCachedThreadPool ()
, где выдается исключение RejectedExecutionException
. Есть только три случая, когда он появляется в Java 6:
execute ()
в ThreadPoolExecutor
и достигается максимальный размер пула. execute ()
в ThreadPoolExecutor
в то же время, что и shutdownNow
, и по существу проиграл гонку с вызовом shutdownNow
. ScheduledThreadPoolExecutor
после завершения работы исполнителя.