线程创建两种方法的刨析:

首先我们先介绍:

两种方法是什么:

方法一:

        1.创建一个类,继承Thread类

        2.在此类中重写run方法

        3.创建类的对象

        4.调用start方法(1.启动线程,2.调用run方法)

刨析:

        Thread中的run方法实际上是实现Runnable接口的方法,所以,创建好类的对象,我们执行了父类的start方法,而这个方法又调用自己run方法,此时run‘方法就是子类的了。

 方法二:

1.创建一个实现类的对象实现Runnable接口,并实现run方法

2.创建Thread类的对象,将Runnable的实现类的对象作为参数传给Thread类的对象

3.使用Thread调用start方法(不同于方法一,虽然对象种类不同,但是方法是一个方法)

刨析:

        此时就直接绕过Thread类,直接实现了Runnable接口,重写了run方法,将这个实现类的对象作为参数传递给Thread类的时候,Thread类完成了Runnable target这个属性的赋值,start方法调用自己的run方法(target.run),执行是实现类的方法(也就是接口的多态性)

        称之为代理模式

总结:

        实际上,本质是使用的是一个start方法,无论重写谁的run方法,最终都会执行到你重写的run方法(这不废话),方法一是一个虚方法调用,执行到run,方法二是一个接口的多态性,执行到run。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值