Почему бы не запустить поток в конструкторе? Как завершить работу?

Я учусь использовать потоки в Java. И я написал класс, который реализует Runnable для одновременного запуска с другим потоком. Основной поток обрабатывает прослушивание последовательного порта, тогда как второй поток будет обрабатывать отправку данных на тот же порт.

public class MyNewThread implements Runnable {
    Thread t;

    MyNewThread() {
        t = new Thread (this, "Data Thread");
        t.start();
    }

    public void run()  {
        // New Thread code here 
    }

Первый поток запускает второй следующим образом:

public class Main {
    public static void main(String[] args) throws Exception{
        new MyNewThread();
        // First thread code there
    }  
}

Это работает, но мой компилятор отмечает предупреждение: Это опасно начинать новый поток в конструкторе. Почему?

Вторая часть этого вопроса: как, если у меня есть цикл, работающий в одном потоке (поток прослушивания последовательного порта), и я набираю команду выхода во втором потоке. Как мне завершить первый поток? Спасибо.

46
задан Gray 17 December 2013 в 15:05
поделиться