2018年5月6日

摘要: 设计模式之美 工厂模式 [toc] 设计模式之美目录: 工厂模式实现了创建者和调用者的分离。工厂模式可分为三种类型:简单工厂、工厂方法、抽象工厂。不过,在 GoF 的《设计模式》一书中,它将简单工厂模式看作是工厂方法模式的一种特例,所以工厂模式只被分成了工厂方法和抽象工厂两类。实际上,前面一种分类方 阅读全文
posted @ 2018-05-06 21:48 binarylei 阅读(374) 评论(0) 推荐(0)
摘要: Java Thread系列(十)Future 模式 Future 模式适合在处理很耗时的业务逻辑时进行使用,可以有效的减少系统的响应时间,提高系统的吞吐量。 一、Future 模式核心思想 如下的请求调用过程时序图。当 call 请求发出时,需要很长的时间才能返回。左边的图需要一直等待,等返回数据后 阅读全文
posted @ 2018-05-06 21:21 binarylei 阅读(373) 评论(0) 推荐(0)
摘要: Java Thread系列(九)Master Worker模式 Master Worker模式是常用的并行设计模式. 一、Master Worker 模式核心思想 Master Worker 系统由两个角色组成,Master 和 Worker,Master 负责接收和分配任务,Worker 负责处理 阅读全文
posted @ 2018-05-06 21:19 binarylei 阅读(477) 评论(0) 推荐(0)
摘要: Java Thread系列(十)生产者消费者模式 生产者消费者问题(producer consumer problem),是一个多线程同步问题的经典案例。该问题描述了两个共亨固定大小缓冲区的线程—即所谓的“生产者”和“消费者—在实际运行时会发生的问题。 一、信号灯法 信号灯法实际上就是保证同一时间只 阅读全文
posted @ 2018-05-06 21:17 binarylei 阅读(315) 评论(0) 推荐(0)
摘要: Java Thread系列(七)死锁 当线程需要同时持有多个锁时,有可能产生死锁。考虑如下情形: 线程 A 当前持有互斥所锁 lock1,线程 B 当前持有互斥锁 lock2。接下来,当线程 A 仍然持有 lock1 时,它试图获取 lock2,因为线程 B 正持有 lock2,因此线程 A 会阻塞 阅读全文
posted @ 2018-05-06 21:15 binarylei 阅读(164) 评论(0) 推荐(0)
摘要: Java Thread系列(六)volatile volatile 关键字具备可见性,不具备原子性。主要作用是使变量在多个线程间可见。但不具备原子性(同步性),可以算一个轻量级的 synchronized ,性能要比 synchronized 强很多,不会造成阻塞。 一、volatile 可见性 二 阅读全文
posted @ 2018-05-06 21:14 binarylei 阅读(278) 评论(0) 推荐(0)
摘要: Java Thread系列(四)线程通信 一、传统通信 public static void main(String[] args) throws InterruptedException { final ThreadLocal th = new ThreadLocal(); Thread t1 = 阅读全文
posted @ 2018-05-06 21:13 binarylei 阅读(264) 评论(0) 推荐(0)
摘要: Java Thread系列(五)synchronized 本文我们讨论 synchronized 重量级锁的实现原理。 一、synchronized 实现原理 1.1 synchronized 修饰符对应的字节码指令 我们知道在 java中synchronized 主要有两种使用形式:同步方法和同步 阅读全文
posted @ 2018-05-06 21:13 binarylei 阅读(551) 评论(0) 推荐(0)
摘要: Java Thread系列(三)线程安全 一、什么是线程安全 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。 线程安全来说,需要满足以下两个特性: 原子性 可见性 执行结果: 由此可见: 1. 多个线程要执行 synch 阅读全文
posted @ 2018-05-06 21:12 binarylei 阅读(288) 评论(0) 推荐(0)
摘要: Java Thread系列(二)线程状态 一、线程的五种状态 1. 新建状态(New):新创建了一个线程对象,尚未启动。 2. 就绪状态(Runnable):也叫可运行状态。线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取 CPU 的使用 阅读全文
posted @ 2018-05-06 21:11 binarylei 阅读(313) 评论(0) 推荐(0)
摘要: Java Thread系列(一)线程创建 Java 中创建线程主要有三种方式:继承 Thread、实现 Runnable 接口、使用 ExecutorService、Callable、Future 实现由返回结果的多线程。 线程是 CPU 调度的最小单位。 一、继承 Thread 类创建线程类 《4 阅读全文
posted @ 2018-05-06 21:10 binarylei 阅读(317) 评论(0) 推荐(0)
摘要: 设计模式之美 面向对象六大原则 [toc] 设计模式之美目录: 这是设计模式系列开篇的第一篇文章。也是我学习设计模式过程中的总结。这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则。只有掌握了这些原则,我们才能更好的理解设计模式。 1. 单一职责原则(SRP):一个类应该仅有一个引起他变化的原 阅读全文
posted @ 2018-05-06 21:07 binarylei 阅读(604) 评论(0) 推荐(0)
摘要: 设计模式之美目录 1. [设计模式 开篇] [1.1 设计模式之美 高质量代码修炼之道] 2. [设计模式 面向对象] [2.1 设计模式之美 贫血模型(MVC)和充血模型(DDD)] 3. [设计模式 设计原则] "3.1 设计模式之美 面向对象六大原则" 4. [设计模式 规范与重构] [4.1 阅读全文
posted @ 2018-05-06 19:02 binarylei 阅读(500) 评论(0) 推荐(0)

导航