Потоки SwingWorker изолированы друг от друга и подходят ли они для ExecutorService?
Я пытаюсь выполнить SwingWorker's с Исполнителем. Когда я выполняю / отправляю эти задачи с размером пула потоков 1, задачи выполняются отлично.
Однако, когда я выполняю задачи с размером пула потоков больше 1, я получаю инкапсулирующие исключения NullPointerException и OutOfBoundsException в ExecutionException, которые я видел. Эти исключения не возникают при последовательном запуске задач.
Все задачи имели общий конфигурационный файл - теперь я изменил его, чтобы они использовали свои собственные конфигурационные файлы. Я надеялся, что это устранит одну область, которая может привести к небезопасности потока.
К сожалению, у меня нет доступа к исходному коду библиотеки, которую я вызываю асинхронно.
У меня действительно есть два вопроса:
1). Потоки SwingWorker совместно используют ресурсы? Я предположил бы, что они делают, и что моя проблема связана с отсутствием безопасности потока в библиотеке, которую я называю, например, singleton.
2). Кто-нибудь может прокомментировать целесообразность использования SwingWorker с ExecutorService? У тебя есть какие-нибудь ужасные истории? Причина, по которой я использую SwingWorker, заключается в том, что все это находится под графическим интерфейсом, и я хотел бы иметь возможность отображать обновления прогресса в будущем. Это то, что помешало мне просто использовать ListenableFuture от guava, но если у кого-то есть хорошее решение для продвижения обновлений, я был бы открыт для него.
Спасибо