创建线程有两种方式
1、A extends Thread
2、B implements Runnable
对于第一种方式是必须重写Thread类的run方法,线程执行的是本类对象的run方法
对于第二种方式是必须重写Runnable接口的run方法,线程执行的是Runnable子类的run方法
但二者都是被start方法调用
所以猜想底层原理是不是这样呢:
class Thread
{
private Runnable rab;
Thread()
{}
Thread(Runnable rab)
{
this.rab = rab;
}
void run()
{
if(rab!=null)
rab.run();//如果使用有参构造函数,则调用传进来的对象的run方法
return; //如果使用无参构造方法,却没重写run方法时,直接返回,若重写则执行重写内容
}
void start()
{
run();//无论哪种情况,都会调用run方法
}
}
不知对不对,请指教。
|