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


相关文章
|
2月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
23 3
|
6月前
|
Java
揭秘!为何Java多线程中,继承Thread不如实现Runnable?
【6月更文挑战第19天】在Java多线程中,实现`Runnable`比继承`Thread`更佳,因Java单继承限制,`Runnable`可实现接口复用,便于线程池管理,并分离任务与线程,提高灵活性。当需要创建线程或考虑代码复用时,实现`Runnable`是更好的选择。
54 0
|
Java 调度
Java多线程的创建与Thread类的方法及使用(上)
Java多线程的创建与Thread类的方法及使用(上)
Java多线程的创建与Thread类的方法及使用(上)
Java多线程的创建与Thread类的方法及使用(下)
Java多线程的创建与Thread类的方法及使用(下)
Java多线程的创建与Thread类的方法及使用(下)
|
设计模式 Java 开发者
Thread 与 Runnable 关系 | 学习笔记
快速学习 Thread 与 Runnable 关系。
Thread 与 Runnable 关系 | 学习笔记
Thread和Runnable实现多线程(一)上
实现多线程,有两种方式,一种是继承 Thread 类,一种是实现 Runnable接口。
199 0
Thread和Runnable实现多线程(一)上
Thread和Runnable实现多线程(一)下
Thread和Runnable实现多线程(一)
127 0
Thread和Runnable实现多线程(一)下