设计模式
麦子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 · 204 阅读 · 0 评论 -
上下文设计模式
上下文模式概述:在方法的调用链需要一个上下文来贯穿整个调用链,主要通过它来存储数据和传递数据。通常的上下文模式如下所示(下面也给出了ThreadLocal进行上下文的改造):1.创建ExcutionTask主要用来执行任务public class ExcutionTask implements Runnable { private final QueryForDBAction queryForDBAction = new QueryForDBAction(); private fi原创 2020-08-21 22:24:08 · 714 阅读 · 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 · 238 阅读 · 0 评论 -
Future设计模式
Future设计模式当执行一个操作时,需要执行很长时间的阻塞。而future设计模式可以使并不阻塞当前的执行,让本线程可以继续向下执行。当需要结果的时候我去拿就好了。创建Future接口这是一个一个未来接口,当方法调用时立即返回一个Future,根据future的get方法可以拿到返回的值。public interface Future<T> { T get() throws InterruptedException;}创建FutureTask接口这是一个任务原创 2020-08-21 10:13:08 · 220 阅读 · 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 · 162 阅读 · 0 评论 -
单例设计模式实现的几种方式
1.饿汉模式,静态常量方式饿汉模式避免了线程同步的问题,因为它是在类加载的时候就进行了对象的创建缺点:容易造成资源浪费public class Single{ private static final Single instance = new Single(); private Single(){ } public static Single getInst...原创 2019-10-27 15:07:51 · 130 阅读 · 0 评论