Я пытаюсь запустить Swing Worker, используя службу Executor Service, и происходит нечто странное. В настоящее время я использую метод newSingleThreadExecutor();
, а также следующее:
Future<?> f = execService.submit(swingWorker);
JOptionPane.showMessageDialog(null, "Created Future");
f.get(120, TimeUnit.SECONDS);
То, что происходит, - то, что мой рабочий код колебания работает отлично, пока я не закрываю диалоговое окно сообщения. Если я закрою диалоговое окно, то мое приложение просто полностью зависнет. Я считаю, что поток заблокирован, но по какой причине не уверен.
Если я запускаю Swingworker самостоятельно, без помощи execService, он работает отлично, но, конечно, функция тайм-аута недоступна, и это единственная цель этого. Должен ли я просто использовать таймер вместо этого?
Спасибо