下面的代码运行成功,那么是否意味着我们可以启动线程两次?
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
希望这能澄清!
下面的代码运行成功,是不是意味着我们可以启动线程两次?
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
希望这能澄清!