设计模式
麦子fuke
...
展开
-
Count down设计模式
Count down设计模式介绍 在多线程执行时,如何保证在所有线程都执行完成才统一退出? 原始的使用方式是使用join,对每个线程都join。 在java并发包中有CountDownLatch可以帮助我们解决,只需要new 一个CountDownLatch填入等待执行完成线程的数量即可,在每个线程结束时进行countDown(),并且在主方法设置屏障,只有前面的线程执行完屏障后面的任务才会继续执行 public class Application { public static void main原创 2020-08-22 15:34:03 · 193 阅读 · 0 评论 -
上下文设计模式
上下文模式 概述:在方法的调用链需要一个上下文来贯穿整个调用链,主要通过它来存储数据和传递数据。通常的上下文模式如下所示(下面也给出了ThreadLocal进行上下文的改造): 1.创建ExcutionTask主要用来执行任务 public class ExcutionTask implements Runnable { private final QueryForDBAction queryForDBAction = new QueryForDBAction(); private fi原创 2020-08-21 22:24:08 · 699 阅读 · 0 评论 -
生产者消费者设计模式
生产者消费者设计模式 概述 有两个线程生产者和消费者,有一个任务队列(有大小限制,太大了阻塞当前的生产者,不让其生产)。队列中有put和take方法。 put方法时将消息(Message)放入队列中,唤醒消费者进行消费 take拿出一个消息进行消费。唤醒生产者可以生产。 代码实现如下 1.编写Message消息类 public class Message { private String data; public Message(String data) { this.原创 2020-08-21 22:18:14 · 199 阅读 · 0 评论 -
Future设计模式
Future设计模式 当执行一个操作时,需要执行很长时间的阻塞。而future设计模式可以使并不阻塞当前的执行,让本线程可以继续向下执行。当需要结果的时候我去拿就好了。 创建Future接口 这是一个一个未来接口,当方法调用时立即返回一个Future,根据future的get方法可以拿到返回的值。 public interface Future<T> { T get() throws InterruptedException; } 创建FutureTask接口 这是一个任务原创 2020-08-21 10:13:08 · 214 阅读 · 0 评论 -
设计模式-六种设计原则
设计原则 1.单一职责原则 降低类的复杂度,一个类只负责一个职责。 提高代码的可读性、可维护性。 降低代码变更引起的风险。 通常情况下:应该遵守单一职责原则,只有在逻辑足够简单可以违反单一职责原则,可以在方法级别保持单一职责。 2.接口隔离原则 客户端不应该依赖他不需要的忌口,即一个类对另一个类的依赖应该建立在最小接口上。 例如 有接口1,此时在接口1中有方法1、方法2、方法3、方法4、方法5。 有类A、B实现了接口1,但是A只会用到方法1、2、3,方法B只会用到方法1、4、5。 接口隔离原则改进:原创 2020-08-03 23:01:42 · 153 阅读 · 0 评论 -
单例设计模式实现的几种方式
1.饿汉模式,静态常量方式 饿汉模式避免了线程同步的问题,因为它是在类加载的时候就进行了对象的创建 缺点:容易造成资源浪费 public class Single{ private static final Single instance = new Single(); private Single(){ } public static Single getInst...原创 2019-10-27 15:07:51 · 119 阅读 · 0 评论