多线程设计模式
睡醒的土豆
这个作者很懒,什么都没留下…
展开
-
多线程设计模式-Active Objects设计模式
Active Objects设计模式测试异步消息的主动对象package com.ln.concurrent.chapter18;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter18 * @Name:ActiveObjectTest * @Author:linianest * @CreateTime:2021/1/4 16:17 * @version:1.0 * @Description原创 2021-01-04 18:48:48 · 170 阅读 · 1 评论 -
多线程设计模式-流水线模式(Work-Thread)
Work-Thread设计模式使用场景:流水线线程工作模式,产品零件经过几道工序,变成产品请求任务package com.ln.concurrent.chapter17;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter17 * @Name:Request * @Author:linianest * @CreateTime:2021/1/4 14:05 * @version:1.0 *原创 2021-01-04 14:54:17 · 1250 阅读 · 0 评论 -
多线程设计模式-两阶段结束设计模式(Two Phase Termination)
两个阶段结束设计模式(Two Phase Termination)线程一般结束后,线程中的数据还存在,需要释放,这样的情况为两个阶段,也就是目前所说的两阶段结束线程设计模式线程统计数据package com.ln.concurrent;import java.util.Random;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent * @Name:CounterIncrement * @Author:l原创 2021-01-04 13:52:56 · 207 阅读 · 4 评论 -
多线程设计模式-单独线程处理请求设计模式(Thread-Per-Message)
Thread-Per-Message设计模式每次请求访问,单独一个线程执行请求数据package com.ln.concurrent.chapter15;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter15 * @Name:Message * @Author:linianest * @CreateTime:2021/1/4 11:13 * @version:1.0 * @Descrip原创 2021-01-04 11:33:18 · 159 阅读 · 0 评论 -
多线程设计模式-Count Down设计模式
Count Down设计模式jdk自带的阻塞主线程模式,类似于join的功能:通过统计执行线程的个数,来判断执行线程是否执行完成,主线程阻塞package com.ln.concurrent.chapter14;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter14 * @Name:JDKCountDown * @Author:linianest * @CreateTime:2021/1/4原创 2021-01-04 11:09:09 · 104 阅读 · 0 评论 -
多线程设计模式-生产者消费者模式(Proudcer-consumer)
生产者消费者模式(Proudcer-consumer)多线程共享资源,生产者生产到消息队列中(大小限制),消费者从中消费消费数据,如果生产者过快,当满了队列后,生产者休眠,如果队列为空,消费者休眠消息体package com.ln.concurrent.chapter13;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter13 * @Name:Message * @Author:liniane原创 2021-01-03 18:21:39 · 224 阅读 · 2 评论 -
多线程设计模式- Balking设计模式
Balking设计模式使用场景:当你去小酒馆消费,当你召唤服务生后,有好几个服务生看到,当一个远些的服务生正准备去服务时,近些的服务生发现后去服务,远一些的服务生发现后,就放弃此次服务(任务数据的状态已经发生改变)package com.ln.concurrent.chapter12;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter12 * @Name:BalkingData * @Autho原创 2021-01-03 17:36:21 · 142 阅读 · 1 评论 -
多线程设计模式-Servlet上下文模式(Threadlocal实现)
上下文模式(Threadlocal实现)在web中碰到运行上下文内容,可以用threadlocal的原理来实现,通过这种方式,更能明白网络请求中的上下文是如何实现的使用场景:网络请求的数据分别在DB和其他http中,通过threadlocal隔离其他线程的访问本线程的内容,达到多线程安全的目的上下文内容属性package com.ln.concurrent.chapter11;/** * @ProjectName: java-concurrency * @Package: com.ln.co原创 2021-01-03 16:54:33 · 431 阅读 · 2 评论 -
多线程设计模式-本地线程(Threadlocal)使用详解以及原理介绍
本地线程(Threadlocal)什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。存储模型是hashMap,key是每个线程的id,值原创 2021-01-03 16:13:22 · 1913 阅读 · 1 评论 -
多线程设计模式-未来者设计模式(Future)
未来者设计模式(Future)定义接口,返回任意类型的结果package com.ln.concurrent.chapter8;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter8 * @Name:FutureTask * @Author:linianest * @CreateTime:2020/3/25 14:56 * @version:1.0 * @Description TODO:定原创 2021-01-02 15:57:47 · 354 阅读 · 2 评论 -
多线程设计模式-不可变对象设计模式
不可变对象设计模式无锁状态的设计,比有锁的设计模式减少加锁和释放锁的时间消耗不可变对象一定是线程安全的:里面的任何属性或者引用类型的属性都不能被修改可变对象不一定是线程不安全的:StringBufferFinal关键字1、final修饰的成员变量只能初始化一次赋值。1:直接赋值 2:构造函数中赋值final修饰的成员变量是基本类型,不可被修改,引用类型也如此,地址不可被修改,但是引用对象里面的数据是可以被修改的2、final修饰的类,是不可被继承的,成员方法都会被隐式指定为final类型方原创 2021-01-02 11:12:22 · 159 阅读 · 0 评论 -
Java设计模式-单例模式实际应用场景
单例模式应用的场景单例模式应用的场景一般发现在以下条件下: 资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件,应用配置。确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。Windows的Task Manager(任务管理器)、Recycle Bin(回收站)、网站计数器单例模式应用的场景一般发现在以下条件下:1、资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。2、控制资源的情况原创 2021-01-02 10:19:41 · 3082 阅读 · 6 评论 -
多线程设计模式-多线程读写锁分离模式
多线程读写锁分离模式定义共享数据缓存区buffer,有线程往缓存区写数据,有线程从缓存区读取数据,读写锁分离读写锁:为了更高效的读写数据,将锁分为两种,读数据是读锁,可以并行化多线程执行,写数据是写锁,只能串行化。READWriteREADNYWriteYY读写锁ReadWriteLock/** * @ClassName:ReadWriteLock * @Author:linianest * @CreateTime:2020/3/24 11:06 *原创 2021-01-02 10:04:35 · 194 阅读 · 2 评论 -
多线程设计模式-单线程执行模式
3、单线程执行模式场景:有一个门,记录每次进入们的用户的姓名和来历package com.ln.concurrent.chapter5;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter5 * @version: 1.0 *//** * @ClassName:Gate * @Author:linianest * @CreateTime:2020/3/24 9:06 * @version原创 2021-01-02 08:57:49 · 199 阅读 · 1 评论 -
多线程设计模式-观察者模式
多线程观察者模式定义观察者事件公共接口package com.ln.concurrent.chapter4;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter4 * @Name:LifeCycleListener * @Author:linianest * @CreateTime:2021/1/1 17:30 * @version:1.0 * @Description TODO: 定义观察原创 2021-01-01 17:51:30 · 202 阅读 · 0 评论 -
多线程设计模式-单线程观察者
单线程观察者模式/** * @ClassName:Subject * @Author:linianest * @CreateTime:2020/3/23 9:38 * @version:1.0 * @Description TODO: 观察者观察的主题 */public class Subject { List<Observer> observers = new ArrayList<>(); private int state; publ原创 2021-01-01 17:49:29 · 92 阅读 · 0 评论 -
设计模式-单例模式
1、单例模式饿汉式缺点:不能懒加载/** * @ClassName:SingletonObject1 * @Author:linianest * @CreateTime:2020/3/21 10:40 * @version:1.0 * @Description TODO: 单例设计模式:饿汉式 */public class SingletonObject1 { private static final SingletonObject1 instance = new Singlet原创 2020-12-31 18:16:45 · 92 阅读 · 0 评论