第3章:Java并发包中的ThreadLocalRandom类原理剖析
Random类及其局限性 一般情况下,我们都会使用java.util.Random来生成随机数(Math.random()也是使用Random实例生成随机数)。 示例 public static void main(String[] args) { Random random = new Random(); for (int i = 0; i < 10; i++)...
Random类及其局限性 一般情况下,我们都会使用java.util.Random来生成随机数(Math.random()也是使用Random实例生成随机数)。 示例 public static void main(String[] args) { Random random = new Random(); for (int i = 0; i < 10; i++)...
一、前言 1、SSO说明 SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。https://baike.baidu.com/item/SSO/3451380 例如访问在网易账号中心(https://reg.163.com/ )登录之后 访问以下站点都是登录状态 网易直播 https://v.163...
🏗️ 建造者模式 (Builder Pattern) 深度解析 1. 模式动机与定义 1.1. 模式动机:分离复杂对象的构建与表示 在现实世界和软件系统中,存在许多复杂的对象,它们由多个组成部分构成(例如一辆汽车包含车轮、发动机、方向盘等)。 问题:对于大多数用户而言,他们只需要一个完整的对象(一辆汽车),而不需要知道这些部件的装配细节,也不能随意更改组装顺序,因为某些属性的赋...
锁的使用 Concurrent.util常用类 CyclicBarrier: 假设又只有的一个场景:每一个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家都要等待。 CountDownLacth使用: 常用于监听某些初始化操作,等初 始化执行完毕后,通知主线程继续。 CountDownLacth countDownLacth = new Cou...
📢 观察者模式 (Observer Pattern) 深度解析 1. 模式动机与定义 1.1. 模式动机:建立松耦合的一对多依赖 在软件系统中,经常需要建立一种对象与对象之间的依赖关系:当一个对象(观察目标/Subject)发生改变时,需要自动通知其他一个或多个对象(观察者/Observer),并让它们做出相应的反应。 核心需求: 低耦合:观察目标不应该知...
volatile关键字 volatile关键字的主要作用是使变量在多个线程间可见 一个线程可以执行的操作有使用(use)、赋值(assign)、装载(load)、存储(store)、锁定(lock)、解锁(unlock)。 而主内存可以执行的操作有读(read)、写(write)、锁定(lock)、解锁(unlock),每个操作都是原子的。 volatile的作用就是强制线程到主内存...
📝 适配器模式 (Adapter Pattern) 深度解析 🚀 1. 模式动机 (Motivation) 在软件开发中,我们常常遇到这样的情况:现有的类已经实现了所需的功能,但它提供的接口(方法名、参数等)与客户端期望的接口不兼容,导致客户端无法直接使用。 适配器模式的设计灵感来源于现实中的电源适配器或读卡器: 它定义一个包装类(适配器 Adapter),去包装那个接口不兼容...
🚶 访问者模式 (Visitor Pattern) 深度解析 1. 模式动机与定义 1.1. 模式动机:分离操作与数据结构 在一个对象结构(如复杂的树形或列表)中,包含了很多不同类的对象。我们经常需要对这些对象执行各种不相关的操作(例如:计算成本、生成报表、执行类型检查)。 问题:如果将所有操作都放在元素类内部,会导致: 元素类职责过多,违反单一职责原则。...
🏛️ 外观模式 (Facade Pattern) 深度解析 1. 模式动机与定义 1.1. 模式动机:简化复杂子系统的访问 在复杂的软件系统中,通常会划分为多个子系统,每个子系统包含大量的类和复杂的交互逻辑。客户端如果需要调用一项功能,往往需要了解并操作多个子系统中的多个接口。 问题:客户端与子系统内部的复杂性之间存在高度的耦合,导致代码复杂、难以维护和使用。 解决方案:引...
🎁 装饰模式 (Decorator Pattern) 深度解析 1. 模式动机与定义 1.1. 模式动机:灵活地扩展对象功能 给一个类或对象增加行为,通常有两种主要方式: 继承机制:通过继承现有类来添加功能。这是静态的,功能在编译时确定,且会随着扩展功能增多导致子类数量爆炸性增长。 关联机制 (装饰模式):将一个类的对象嵌入另一个对象中(即使用组合/聚合),由外部对象(装饰...