java 线程这样也能被调用,那么……

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:19:33
请问这样调用线程和用start()方法调用线程有什么区别?哪种更好?
谢谢!
class A implements Runnable{
public static void main(String args[]){
new A();
}
A(){
run();
}
public void run(){}
}

Runnable 只提供了一个抽象的run方法,实现他并不能把类变成一个线程,
Runnable类是一个标准,要求实现run方法,为什么呢,真正的线程是 Thread类,
Thread 类在start方法里会调用绑定的对象的run方法

把它写成这样你就会看出,他实际上还是一个单线程,当第一个运行完后才会运行第二个

class A implements Runnable {
public static void main(String args[]) {
new A();
new A();
}

A() {
run();
}

public void run() {
int i = 100;
while( i > 0){
System.out.println(i--);
}
}
}

下面才是多线程,比较结果

class A implements Runnable {
public static void main(String args[]) {
new Thread(new A()).start();
new Thread(new A()).start();
}

A() {
}

public void run() {
int i = 100;
while( i > 0){
System.out.println(i--);
}
}
}

我觉的楼上的说法有问题;

继承Runnable接口后
重写 run()方法(把你的代码写在run方法里)
然后调用start()方法,线程开始运作
不管你实例化了几个多线程类,当调用它们的start()方法后,都开始运行
并不是单线程运行的。