JDK源码解析

Runnable是一个典型命令模式,

Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法

/命令接口(抽象命令角色)
public interface Runnable {public abstract void run();
}
​
//调用者
public class Thread implements Runnable {private Runnable target;public synchronized void start() {if (threadStatus != 0)throw new IllegalThreadStateException();
​group.add(this);
​boolean started = false;try {start0();started = true;} finally {try {if (!started) {group.threadStartFailed(this);}} catch (Throwable ignore) {}}}private native void start0();
}

会调用一个native方法start0(),调用系统方法,开启一个线程。

而接收者是对程序员开放的,可以自己定义接收者。

/*** jdk Runnable 命令模式*      TurnOffThread : 属于具体*/
public class TurnOffThread implements Runnable{private Receiver receiver;public TurnOffThread(Receiver receiver) {this.receiver = receiver;}public void run() {receiver.turnOFF();}
}
*** 测试类*/
public class Demo {public static void main(String[] args) {Receiver receiver = new Receiver();TurnOffThread turnOffThread = new TurnOffThread(receiver);Thread thread = new Thread(turnOffThread);thread.start();}
}

JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法相关推荐

  1. JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。

    JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的. 看完这段代码是不是很熟悉,与我们上面代码基本类似.单列集合都使用到了迭代器,我们以Arr ...

  2. JDK源码解析 Comparator 中的策略模式

    JDK源码解析 Comparator 中的策略模式.在Arrays类中有一个 sort() 方法,如下: public class Arrays{public static <T> voi ...

  3. JDK源码解析 InputStream类就使用了模板方法模式

    JDK源码解析 InputStream类就使用了模板方法模式. 在InputStream类中定义了多个 read() 方法,如下: public abstract class InputStream ...

  4. JDK源码解析 Integer类使用了享元模式

    JDK源码解析 Integer类使用了享元模式. 我们先看下面的例子: public class Demo {public static void main(String[] args) {Integ ...

  5. JDK源码解析 —— IO流中的包装类使用到了装饰者模式

    JDK源码解析 IO流中的包装类使用到了装饰者模式. BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter ...

  6. BigInteger类实例的构造过程——JDK源码解析

    最近看了下JDK1.6版本的BigInteger类,仔细研究了下大整数实例的构造过程,现在把自己的所得所想分享给大家. 首先,为什么需要大整数类?简单的说就是因为内部的数据类型能表示的最大数是64位长 ...

  7. JDK源码解析之Java.util.Collections

    java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一个工具类,服务于Java的Collection框架. 一.源码解析 1.不可实例 ...

  8. JDK源码解析之Java.util.Collection

    Collection是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素,JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现 一.源码解析 1 ...

  9. JDK源码解析--Object类

    作为一名java开发,肯定会知道object类,object类是所有类的基类,当一个类没有直接继承任何类时,默认继承object类,所以也被称之为"上帝类". 目录 一.继承Obj ...

最新文章

  1. 理解Linux下的SELinux(MAC)
  2. Linux——如何打开或者安装g++
  3. day32 管道, 数据共享, 进程池, 回调函数
  4. 疑似华为Mate 30系列通过3C认证:标配40W快充
  5. linux5 yum安装,(5)Linux_软件管理_yum安装本地软件
  6. CCTV 报道深圳高交会上的物联网城市应急感知网络
  7. java电池soc算法实现,BMS算法设计之电池SOC介绍(一)
  8. 特殊的forward_list操作
  9. 委托、Lambda表达式、事件系列06,使用Action实现观察者模式,体验委托和事件的区别...
  10. Java 接口和抽象类的异同点
  11. android+蓝牙手柄+驱动+win10,jetion手柄驱动万能版
  12. Vue 使用Echarts
  13. 数字化时代,如何赋能人才
  14. qq微信电脑客户端 for mac v1.0.0.6 官方版
  15. 图卷积神经网络代码讲解,卷积神经网络python实例
  16. php euc-cn,php配置中文解说
  17. sql语句分类(附mysql实操语句)
  18. NodeJs C++ addon(插件nan方式)
  19. GDDR6X和GDDR6差距对比 GDDR6X和GDDR6区别
  20. vue项目storage本地存储

热门文章

  1. Spring boot 配置文件 使用占位符号
  2. 微信小程序新增推广功能,支持自定义关键词
  3. dofuscator C# 混淆器 原来如此
  4. web标准页面知识必备
  5. 服务机器人---设计中的仿真
  6. 自制一个 elasticsearch-spring-boot-starter
  7. 使用Jest操作ElasticSearch 报错:No time zone indicator问题的解决方案
  8. java匿名内部类举例和内部类举例
  9. C# WebApi+Task+WebSocket实战项目演练(四)
  10. nodejs下载安装教程(XP版)