2014-10-02 3 views
2

Я создаю Thread как следующий код. Это Thread отправит POST request. (Код еще не написана, так что я не выкладываю детали код Thread)Является ли Thread действительно прекрасным, когда я использую новый Thread(). Interrupt() ;?

final Runnable Update_Value = new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 

      **// It will send the POST request to the Server** 

     } 
    }; 

Я использую new Thread(Update_Value).start(); запустить тему.

И я использую new Thread(Update_Value).interrupt(); для прерывания потока.

1. Если я использую new Thread(Update_Value).start(); для запуска Thread.

2 Как прервать нить при использовании new Thread(Update_Value).start();?

3 Является ли поток закрытым, когда приложение закрыто, если я его не закрыл?

Извините за мой английский ... Спасибо заранее.

ответ

2
  1. Если вы используете new Нить каждый раз, два вызова создают два разных потока; они не действуют по одной теме.

  2. Метод interrupt() не останавливает нить. Скорее, он сообщает потоку взглянуть на любые флаги прерываний, которые также могут быть установлены, например, флаг выключения. Сам поток должен содержать код для проверки прерываний и проверки флажков, таких как флаги выключения.

+0

как насчет, если вы назначаете нить нулевым? он останавливает поток? –

+1

@KickButtowski Нет, вам нужно обрабатывать прерывание себя в Thread. Это довольно просто. Используйте метод 'isInterrupted()' для выхода из циклов и catch 'InterruptedException'. – ddmps

+0

Что произойдет, если и назначить нуль нитку? –

1

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

Чтобы правильно обрабатывать сигнал прерывания, ваш код потока должен захватывать InterruptedException. Что-то вроде этого:

try { 

     // do thread task 

} catch (InterruptedException e) { 
    // interrupted: if required do something on interrupt or simply return 
    return; 
} 
Смежные вопросы