Java线程创建静态代理模式代码实例
作者:羊37 发布时间:2021-11-17 18:37:23
一、背景
在通过Runnable接口创建线程时,启动线程需要借助Thread类,这里就涉及到了静态代理模式。
二、实例
以歌手演出为例,在演出的这个过程中,歌手与他的助理他们有一个共同的目标"完成这场演出"。
为啥需要歌手需要有助理呢?
因为举办好一场演出有很多繁琐的事情要做,为了让歌手专心完成"唱歌"这件事,助理就需要在背后帮助歌手做很多事情。
1.助理负责帮助歌手做一些辅助工作,例如帮忙宣传、帮忙计划行程、帮忙订机票等等。
2.歌手负责唱歌这件事情。
三、实例的代码体现
1.公共的接口show
歌手与助理为了完成演出,都需要为这场演出做一些事情。
2.歌手类Singer实现Show接口
歌手要做的事情主要就是唱歌
3.助理类AssistantManager实现Show接口
助理要帮助歌手做一些辅助的工作
这样写助理和歌手好像并没有联系起来,我们只知道助理和歌手都为了同一场演出做了一些事情。
那这个助理究竟是服务哪一位歌手呢?
A.我们为助理类设置了一个成员变量"歌手"
B.为助理类创建了相应的构造方法
(经过以上两步,助理类在创建时就自带了一个相应的"歌手")
C.在演出所做的事情中,让助理对应的歌手完成"唱歌"这件事。
在创建助理类对象时设置相应的对象,借助助理类对象,就可以完成"演出"这整个过程。
运行代码:
四、总结
1.Java中的Thread类实现了Runable接口
即Thread类相当于上文中的"助理"
2.我们写的类也是实现了Runnable接口
即我们写的类相当于上文中的"歌手"
3.在实现了Runnable接口后通过代理类Thread对象完成线程的启动
A.在代理类Thread对象的创建中,声明了我们所写的实际对象,eg:"myRunnable"。
B.然后由Thread类协助我们完成这一系列的操作。
C.看似简单的start()背后,代理类Thread还帮助我们做了很多事。
来源:https://www.cnblogs.com/yang37/p/12683021.html


猜你喜欢
- 1、说明向上转型就是把一个子类引用给一个父类引用,也就是父类引用 引用了子类的对象,即父类 父类对象 = 子类实例。此时通过父类引用变量调用
- IDEA配置阿里规范插件P3C进入idea -》File -》 Settings -》Plugins到搜索框中搜索:Alibaba Java
- 1. Action/Service/DAO简介:Action是管理业务(Service)调度和管理跳转的。Service是管理具体的功能的。
- 有段时间没有看视频了,昨天晚上抽了点空时间,又看了下鸿洋大神的视频教程,又抽时间写了个学习记录。代码和老师讲的基本一样,网上也有很多相同的博
- 光流的概念是由一个叫Gibson的哥们在1950年提出来的。它描述是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时
- string 类型是C#的基元类型之一,它是一个引用类型,对应FCL中的System.String类型。string 类型和普通的引用类型相
- 在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内
- 介绍主要使用了goole的zxing包,下面给出了示例代码,很方便大家的理解和学习,代码都属于初步框架,功能有了,需要根据实际使用情况完善优
- 本文实例讲述了C#将DataTable转换成list及数据分页的方法。分享给大家供大家参考。具体如下:/// <summary>
- Linux Hadoop 2.7.3 安装搭建Hadoop实现了一个分布式文件系统(Hadoop Distributed File Syst
- Springboot 实体类生成数据库表JPA:springboot -jpa:数据库的一系列的定义数据持久化的标准的体系学习的目的是:利用
- 前几天,公司数据库出现了两条相同的数据,而且时间相同(毫秒也相同)。排查原因,发现是网络波动造成了重复提交。由于网络波动而重复提交的例子也比
- 再做一个项目的时候,要求标题栏的标题再中间,样式,字体大小都要自定义。左边一个返回按钮,一个关闭按钮,右边定义一个提交按钮,有时候显示有时候
- 前面讲了 Spock框架Mock对象方法经验总结一、静态方法Mock静态方法我们使用PowerMock结合Mockito的方案,首先在测试类
- 本文为大家分享了C#利用VS中插件打包并发布winfrom程序,供大家参考,具体内容如下1.先在VS 的扩展更新中搜索此插件【2015 in
- 区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的。这篇文章就是帮助你使用 Java
- 在C#中,在处理字符串拼接的时候,使用StringBuilder的效率会比硬拼接字符串高很多。到底有多高,如下:static void Ma
- 本文实例为大家分享了Android实现秒表功能的具体代码,供大家参考,具体内容如下设计完成一个秒表,具备启停功能,正确使用工作线程完成界面刷
- 前言在日常的Android开发中,我们在做登录注册等带有提示性输入校验的时候。常常会写样子写代码:然后你会发现每一次写带有提交信息页面的时候
- Java 读取外部资源的方法详解在Java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在we