@artshelom

Как остановить параллельное выполнение?

public class qw {
    public static void main(String[] args) {
        System.out.println("Начало главной нити");
        for (int i=0;i<7;i++){
            new ww("id"+i).start();
        }
        System.out.println("Окончила работу главная нить");
    }
}
class ww extends Thread{

    public ww(String nazv) {
        super(nazv);
    }

    @Override
    public void run() {
        System.out.println("Поток %s начал работу... \n"+ Thread.currentThread().getName());
        try{
            Thread.sleep(5000);
        }
        catch(InterruptedException e){
            System.out.println("Поток прерван");
        }
        System.out.println("Поток %s завершил работу... \n"+ Thread.currentThread().getName());
    }
}

Как можно остановить выполнение нити ссылаясь только на её имя??
Вот в таком коде??
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@Free_ze
Пишу комментарии в комментарии, а не в ответы
У треда должна быть обертка, в которой будет булево свойство (interruptionRequested, например), которую треду необходимо проверять самостоятельно между атомарными операциями своей полезной нагрузки. ("Скопировал файл, проверил - false, скопировал следующий, проверил - false, скопировал еще один, проверил - true, завершился").

То есть тред сам решает, когда ему остановится, но мы можем посигналить ему об этом. Иначе мы рискуем поломать данные, т.к. не будем наверняка знать, в каком состоянии они находятся.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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