Как се убива нишка в Java?

Как се убива java.lang.Thread в Java?

Решение

Вижте тази тема от Sun за това защо са премахнали Thread.stop(). Там подробно се обяснява защо този метод е бил лош и какво трябва да се направи, за да се спират безопасно нишки като цяло.

Начинът, който те препоръчват, е да се използва споделена променлива като флаг, който иска от фоновата нишка да спре. След това тази променлива може да бъде зададена от друг обект, който иска прекратяване на нишката.

Коментари (9)

Обикновено не..

Искате от нея да прекъсне това, което прави, като използвате Thread.interrupt() (връзка към javadoc)

Добро обяснение на причините е дадено в javadoc тук (връзка към java technote).

Коментари (2)

Един от начините е чрез задаване на променлива на класа и използването ѝ като страж.

Class Outer {
    public static volatile flag = true;

    Outer() {
        new Test().start();
    }
    class Test extends Thread {

        public void run() {
            while (Outer.flag) {
                //do stuff here
            }
        }
    }

}

Задайте външна променлива на класа, т.е. flag = true в горния пример. Задайте я на false, за да 'убиете' нишката.

Коментари (7)