Заставить убить бегущую нить - PullRequest
1 голос
/ 03 ноября 2011

Я создаю приложение, в котором в действии я использую 2 потока,

1-main thread,
2-other thread

Теперь при некоторых обстоятельствах я хочу принудительно уничтожить другой поток, чтобы работал только мой основной поток.

В настоящее время я использую его как:

if(other_thread!=null)
   other_thread.interrupt();

но в методе interrupt(), когда основной поток завершил свою задачу, тогда другой поток начал выполнять свою задачу ... И мое требование - мое приложение заканчивается, когда основной поток завершил свою задачу ... Так что вместо использования interrupt(), который шаги, которые я должен выполнить, чтобы заставить убить это other_thread ??

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Я не буду рекомендовать вам использовать метод interrupt() или любые другие методы уничтожения потоков.Если у вас есть поток с циклом while внутри, вы можете управлять этим потоком с помощью логического flag для условия while.Когда вы устанавливаете флаг false, поток просто завершает свою задачу.Затем вы можете вызвать thread.join() из основного потока, чтобы убедиться, что другой поток завершил выполнение.Надеюсь, это поможет.

Вот небольшой пример:

boolean flag = true;
Thread secondary = new Thread(new Runnable() {

    @Override
    public void run() {
        while (flag) {
        // do something
        }
    }
});
secondary.start(); //start the thread
flag = false; // this will force secondary to finish its execution
try {
    secondary.join(); // wait for secondary to finish
} catch (InterruptedException e) {
    throw new RuntimeException(e);
}
0 голосов
/ 03 ноября 2011

Я предполагаю, что у вас есть переменная, которая заставляет поток работать, пока это условие истинно или что-то похожее.Вы можете создать метод внутри этого потока и установить для переменной значение false или similiar, чтобы разорвать цикл, который заставляет поток работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...