Member 12139442 Ответов: 2

Как остановить определенный поток среди других запущенных потоков


у меня есть программа, где я расширил свингворкера в трех классах. И у меня есть кнопка для отмены. Я использовал swingworker cancel
new swingWorkerClass().cancel
.
Боюсь ли я, что если пользователь нажмет кнопку отмены, то он отменит все остальные потоки, запущенные в этом конкретном экземпляре приложения? То есть будет ли он отменять каждый поток, запущенный даже другими классами. Если да, то как я могу получить и остановить определенный поток?.

Что я уже пробовал:

new swingWorkerClasss (). cancel

2 Ответов

Рейтинг:
2

Member 12139442

Я прочитал документацию и понял, что она останавливает только свой собственный поток.
Отмена фоновых задач (учебники Java™ & gt; создание графического интерфейса с JFC/Swing > параллелизм в Swing)[^]


Рейтинг:
2

Patrice T

Вообще говоря, иметь основной поток, отменяющий дочерние потоки, - плохая идея, все, что может пойти не так, будет неправильно, это просто вопрос времени.
Потому что отмена потока является авторитетной, и это происходит независимо от того, что делает поток, и нет никакой очистки.
Лучше всего спроектировать поток таким образом, чтобы вы могли послать ему сигнал и позволить потоку прерваться самому по себе, что позволит потоку выполнить всю очистку перед прерыванием.