Thread 与 Runnable 关系 | 学习笔记

简介: 快速学习 Thread 与 Runnable 关系。

开发者学堂课程【Java 高级编程Thread 与 Runnable 关系】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/281


Thread 与 Runnable 关系

内容简介

一、前言

二、Thread 与 Runnable 关系

三、多线程开发

四、内存图

一、前言

经过一系列的分析之后可以发现,在多线程的实现过程之中已经有了两种做法:Thread 类、Runnable 接口,如果从代码的结构本身来讲肯定使用 Runnable 是最方便的,因为其可以避免单继承的局限,同时也可以更好的进行功能的扩充。

但是从结构上也需要来观察 Thread 与 Runnable 的联系,打开 Thread 类的定义:

图片117.png

发现现在 Thread 类也是 Runnable,接口的子类,那么在之前继承 Thread 类的时候实际上覆写的还是 Runnable 接口的 run() 方法,于是此时来观察一下程序的类结构。

图片118.png

二、Thread 与 Runnable 关系

图片119.png

多线程的设计之中,使用了代理设计模式的结构,用户自定义的线程主体只是负责项目核心功能的实现,而所有的辅助实现全部交由 Thread 类来处理。

在进行 Thread 启动多线程的时候调用的是 start() 方法,而后找到的是 run()方法。

但通过 Thread 类的构造方法传递了一个 Runnable 接口对象的时候,那么该接口对象将被 Thread 类中的 target 属性所保存,在 start() 方法执行的时候会调用Thread类中的 run() 方法,而这个 run() 方法去调用 Runnable 接口子类被覆写过的 run() 方法。

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

三、多线程开发

图片120.png

范例:利用卖票程序来实现多个线程的资源并发访问

图片121.png

通过内存分析图来分析本程序的执行结构。


四、内存图

图片122.png


            </div>
相关文章
|
设计模式 Java 开发者
Thread 与 Runnable 关系 | 学习笔记
快速学习 Thread 与 Runnable 关系。
134 0
Thread 与 Runnable 关系 | 学习笔记
|
8月前
|
Java
揭秘!为何Java多线程中,继承Thread不如实现Runnable?
【6月更文挑战第19天】在Java多线程中,实现`Runnable`比继承`Thread`更佳,因Java单继承限制,`Runnable`可实现接口复用,便于线程池管理,并分离任务与线程,提高灵活性。当需要创建线程或考虑代码复用时,实现`Runnable`是更好的选择。
81 0
|
Java
多线程中基础Thread和实现Runnable的区别
在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处: 避免点继承的局限,一个类可以继承多个接口。 适合于资源的共享 因为Java本来就是面向接口的,所以第一个特性应该很容易理解,下面我们以买票为例,通过Thread类完成要卖出30张票。虽然现在程序中有三个线程,但是一共卖了10张票,也就是说使用R
1717 0
|
Java 调度
Thread类的方法
Thread类的方法
49 0
|
开发框架 缓存 .NET

热门文章

最新文章