class A extends Thread
{
public void run()
{
System.out.println("hello");
}
}
public class BaseTest
{
public static void main(String[] args)
{
A a = new A();
a.start(); // 也可以改成这样new Thread(a).start(); 请教大家这两句有什么区别吗?
}
}
{
public void run()
{
System.out.println("hello");
}
}
public class BaseTest
{
public static void main(String[] args)
{
A a = new A();
a.start(); // 也可以改成这样new Thread(a).start(); 请教大家这两句有什么区别吗?
}
}
先把a转成了Runnable,这两句的实现肯定是不一样的!
Thread存在Thread(Runnable target) 这样的构造方法来 分配新的 Thread 对象
然后a被看作是Runnable对象,多态
结果一样,实现结果的对象不同!
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
//这样是可以运行的,并输出
hello
hello
hello而改成
A a = new A();
a.start();
a.start();
a.start();
//在输出一个hello后就出现异常了. 为什么呢?
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
//这样是可以运行的,并输出
hello
hello
hello
----------------------3个对象,每个执行一次
而改成
A a = new A();
a.start();
a.start();
a.start();
----------------------1个对象,执行3次
//在输出一个hello后就出现异常了. 为什么呢?
也就是说上面的代码中有三个线程,而下面却是一个线程启动三次。肯定会有错阿!
a.start();是线程a本身执行
new Thread(a).start(); 这个另起一个线程来执行a
执行的线程对象不一样,但都会执行a的run方法
下面的两段的代码都是创建了三个对象再start(),那它们有区别吗?或者说把a作数参数传给Thread()建个Thread对象,这种方法有什么好处吗?
A a = new A();
A b= new A();
A c = new A();
a.start();
b.start();
c.start();
A a=new A();
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();