为什么不在构造函数中启动线程?如何终止线程?

10 浏览
0 Comments

为什么不在构造函数中启动线程?如何终止线程?

我正在学习如何在Java中使用线程。我编写了一个实现了Runnable接口的类,以便与另一个线程并发运行。主线程负责监听串口,而第二个线程将处理向该串口发送数据。

public class MyNewThread implements Runnable {
    Thread t;
    MyNewThread() {
        t = new Thread (this, "Data Thread");
        t.start();
    }
    public void run() {
        // 新线程的代码在这里
    }
}

第一个线程像这样启动第二个线程:

public class Main {
    public static void main(String[] args) throws Exception {
        new MyNewThread();
        // 第一个线程的代码在这里
    }  
}

这样做是可以的,但是我的编译器会显示一个警告,提示:在构造函数中启动一个新线程是危险的。为什么会这样?

这个问题的第二部分是:如果我在一个线程中运行一个循环(即串口监听线程),并在第二个线程中输入一个退出命令,我如何让第一个线程终止?谢谢。

0