多线程使用总结 (一)

118 篇文章 0 订阅
58 篇文章 0 订阅
  • 继承Thread类实现多线程(java.lang.Thread)
  • 基于Runnable接口实现多线程(java.lang.Thread)  ----优先考虑Runnable接口实现

一、多线程启动底层实现:

  •  任何情况下,只要定义了多线程,多线程的启动永远只有一种方案:Thread类中的start()方法。

 二、Thread与Runnable的联系:

 

public  Class Thread extends Object implements Runnable { }

发现Thread类也是Runnable的子类,在使用MyThread类继承Thread类的时候实际上覆写的还是Runnable接口run()方法。

  • Thread与Runnable实现多线程关系图:
  •  多线程的设计之中,使用了代理设计的结构,用户自定义的线程主体只是负责项目核心功能的实现,二所有的辅助功能实现交由Thread来处理。
  • 在进行Thread启动多线程的时候,调用的是start(),而后找到的是run()方法,但通过Thread类的构造方法传递了一个Runnable接口对象的时候,那么该接口对象將被Thread类中的target属性所保存,在start()方法执行的时候会调用Thread类中的run()方法,而这个run()方法去调用Runnable接口子类被覆写过的run()方法。

 

多线程开发的本质实质上是在于多个线程可以进行同一资源的抢占,那么Thread主要描述的是线程,而资源的描述是通过Runnable完成的。(Thread理论上也可以 描述资源,因为Thread是Runnable的子类)

三、 Callable接口实现多线程

 

 范例:

 Runnable与Callable区别?

  • Runnable是在JDK1.0的时候提出的多线程实现接口,而Callable是在JDK1.5之后提出的。
  • java.lang.Runnable接口之中只提供有一个run()方法,并且没有返回值。
  • java.until.concurrent.Callable接口提供有call()方法,可以有返回值。

线程状态:

1、任何一个线程的对象都应该使用Thread类进行封装,所以线程的启动使用的是start()方法,但是启动的时候实际上若干个线程都將进入到一种就绪状态,现在并没有执行。

2、进入到就绪状态之后就需要等待进行资源调度,当某一个线程调度成功之后则进入到运行状态(run()方法),但是所有的线程不可能一直持续执行下去,中间需要产生一些暂停的状态,例如: 某个线程执行一段时间之后就需要让出资源,而后这个线程就將进入到阻塞状态,随后重新回归到就绪状态。

3、当run()方法执行完毕之后,实际上该线程的主要任务也就结束了,那么此时就可以直接进入到停止状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值