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 调度
Java多线程的创建与Thread类的方法及使用(上)
Java多线程的创建与Thread类的方法及使用(上)
Java多线程的创建与Thread类的方法及使用(上)
Java多线程的创建与Thread类的方法及使用(下)
Java多线程的创建与Thread类的方法及使用(下)
Java多线程的创建与Thread类的方法及使用(下)
|
Java 调度
Java多线程(2)--Thread类继承和Runnable接口创建线程
Java多线程(2)--Thread类继承和Runnable接口创建线程
88 0
Java多线程(2)--Thread类继承和Runnable接口创建线程
除了Thread和Runnable,你还知道第三种创建线程的方式Callable吗
相信大多数学过多线程的同学都知道创建线程常见的有三种方式,一种是继承Thread类,一种是实现Runnable接口,最后一种就是Callable,今天主要是对最后不常见的Callable方式进行介绍。
92 0
Thread和Runnable实现多线程(一)上
实现多线程,有两种方式,一种是继承 Thread 类,一种是实现 Runnable接口。
162 0
Thread和Runnable实现多线程(一)上
Thread和Runnable实现多线程(一)下
Thread和Runnable实现多线程(一)
100 0
Thread和Runnable实现多线程(一)下
|
设计模式 Java 开发者
Thread 与 Runnable 关系 | 学习笔记
快速学习 Thread 与 Runnable 关系。
107 0
Thread 与 Runnable 关系 | 学习笔记