下面的代码运行成功,那么是否意味着我们可以启动线程两次?

Below code runs successfully, so does it mean we can start thread twice?

下面的代码运行成功,是不是意味着我们可以启动线程两次?

public class enu extends Thread {
    static int count = 0;

    public void run(){
        System.out.println("running count "+count++);
    }

    public static void main(String[] args) {
        enu obj = new enu();
        obj.run();
        obj.start();
    }
}

输出- 运行 计数 0 运行 计数 1

不,当您调用 obj.start() 时,您只启动了一个新线程一次。 obj.run()在当前线程中执行run方法。它不会创建新线程,您可以随意调用它。

另一方面,不可能多次调用 obj.start()

Thread 生命周期结束于 Thread.State.TERMINATED。

您所做的只是 运行 来自同一线程的 run() 方法 - main-线程。

如果你想在代码部分检查线程的访问,有一个非常简单的测试:

public class randtom extends Thread {
static int count = 0;

public void run(){
    System.out.println(Thread.currentThread().toString());      
    System.out.println("running count "+count++);
}

public static void main(String[] args) {
    randtom obj = new randtom();
    obj.run();
    obj.start();
}}

运行 这导致:​​

Thread[main,5,main]
running count 0
Thread[Thread-0,5,main]
running count 1

希望这能澄清!