Задать вопрос
@Koshkin_I

Как остановить поток?

Здравсвуйте!
Подскажите, можно как-то в таком раскладе:
if (b > 0) {                
                Thread threadCounter = ServiceMethods.setCountLabelWrm();
                threadCounter.start();
                Thread threadBoss = new Thread() {
                    public void run() {                       
                        basicLogic.transition();
                        threadCounter.interrupt();
                    }
                };
                threadBoss.start();
            }

из threadCounter остановить threadBoss? Или, на худой конец, из transition. Но таких транзишенов много и они обычные методы.
Просто сначала хватало, чтобы боссы останавливали каунтеры, а теперь надо и чтобы наоборот.
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Поток завершается только тогда, когда прекращает выполняться код в нём. Поэтому извне остановить потоки нельзя, можно только через волатильную переменную или какой-нибудь примитив синхронизации передать сигнал о том, что выполнение надо прекратить, а в коде потока эту переменную постоянно проверять.
Ответ написан
Комментировать
@Koshkin_I Автор вопроса
Не знаю насколько это костыльно, а может так и надо, сделал так:
доступ к сетчику открывается на "дне" дерева методов внутри transition(). Там кинул исключение и через сигнатуру передал наверх. Не уверен что правильно так, но работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы