黑马程序员技术交流社区
标题:
关于线程开启的底层原理的猜想
[打印本页]
作者:
刘士林
时间:
2012-10-30 20:41
标题:
关于线程开启的底层原理的猜想
创建线程有两种方式
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方法
}
}
不知对不对,请指教。
作者:
王永荣
时间:
2012-10-30 21:04
本帖最后由 王永荣 于 2012-10-30 21:07 编辑
我认为应该再加点东西。。
public
class Thread
implements Runnable
{
private Runnable rab;
Thread(){}
Thread(Runnable rab)
{
this.rab = rab;
}
public
void run()
{
if(rab!=null)
rab.run();//如果使用有参构造函数,则调用传进来的对象的run方法
// return; //多余的
}
public synchronized
void start()
{
//这里边应该还有些判断系统资源的代码。所以加上synchronized
run();//无论哪种情况,都会调用run方法
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2