开发者学堂课程【Java 高级编程:Thread 与 Runnable 关系】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/281
Thread 与 Runnable 关系
内容简介
一、前言
二、Thread 与 Runnable 关系
三、多线程开发
四、内存图
一、前言
经过一系列的分析之后可以发现,在多线程的实现过程之中已经有了两种做法:Thread 类、Runnable 接口,如果从代码的结构本身来讲肯定使用 Runnable 是最方便的,因为其可以避免单继承的局限,同时也可以更好的进行功能的扩充。
但是从结构上也需要来观察 Thread 与 Runnable 的联系,打开 Thread 类的定义:
发现现在 Thread 类也是 Runnable,接口的子类,那么在之前继承 Thread 类的时候实际上覆写的还是 Runnable 接口的 run() 方法,于是此时来观察一下程序的类结构。
二、Thread 与 Runnable 关系
多线程的设计之中,使用了代理设计模式的结构,用户自定义的线程主体只是负责项目核心功能的实现,而所有的辅助实现全部交由 Thread 类来处理。
在进行 Thread 启动多线程的时候调用的是 start() 方法,而后找到的是 run()方法。
但通过 Thread 类的构造方法传递了一个 Runnable 接口对象的时候,那么该接口对象将被 Thread 类中的 target 属性所保存,在 start() 方法执行的时候会调用Thread类中的 run() 方法,而这个 run() 方法去调用 Runnable 接口子类被覆写过的 run() 方法。
多线程开发的本质实质上是在于多个线程可以进行同一资源的抢占,那么 Thread 主要描述的是线程,而资源的描述是通过 Runnable 完成的。
三、多线程开发
范例:利用卖票程序来实现多个线程的资源并发访问
通过内存分析图来分析本程序的执行结构。
四、内存图