Потоки SwingWorker изолированы друг от друга и подходят ли они для ExecutorService?

Я пытаюсь выполнить SwingWorker's с Исполнителем. Когда я выполняю / отправляю эти задачи с размером пула потоков 1, задачи выполняются отлично.

Однако, когда я выполняю задачи с размером пула потоков больше 1, я получаю инкапсулирующие исключения NullPointerException и OutOfBoundsException в ExecutionException, которые я видел. Эти исключения не возникают при последовательном запуске задач.

Все задачи имели общий конфигурационный файл - теперь я изменил его, чтобы они использовали свои собственные конфигурационные файлы. Я надеялся, что это устранит одну область, которая может привести к небезопасности потока.

К сожалению, у меня нет доступа к исходному коду библиотеки, которую я вызываю асинхронно.

У меня действительно есть два вопроса:

1). Потоки SwingWorker совместно используют ресурсы? Я предположил бы, что они делают, и что моя проблема связана с отсутствием безопасности потока в библиотеке, которую я называю, например, singleton.

2). Кто-нибудь может прокомментировать целесообразность использования SwingWorker с ExecutorService? У тебя есть какие-нибудь ужасные истории? Причина, по которой я использую SwingWorker, заключается в том, что все это находится под графическим интерфейсом, и я хотел бы иметь возможность отображать обновления прогресса в будущем. Это то, что помешало мне просто использовать ListenableFuture от guava, но если у кого-то есть хорошее решение для продвижения обновлений, я был бы открыт для него.

Спасибо

0 ответов

Другие вопросы по тегам