JAVA多线程(十四)模式-Active Object

Active Object

通过代理接口,将生产、缓存、消费场景中缓存、消费与生产部分独立出来,通过future模式返回操作结果给生产部分。

缓存部分通过增加调度器来分配数据到执行者,这里可以让执行者由主动切换到被动。可以分离线程和执行策略。

可以由调度器进行负载均衡并可以路由数据处理策略以及执行者不可用时的补偿处理。

适用环境

需要根据数据情况处理多种业务,并且需要一定的调度、均衡、容错的场景。

样例

生产者

创建请求,通过接口调用生产部分消费,根据future同步或异步获取处理结果。

接口

为请求创建future,将请求和future绑定后,放入缓存中,即时返回future。

调度器

负责根据请求中数据情况,按策略选择具体执行者,分发请求。

可以扩展出独立的服务注册、负载均衡、错误处理功能。

缓存

消费者

具体的请求执行者。

时间: 2024-10-05 20:27:21

JAVA多线程(十四)模式-Active Object的相关文章

“全栈2019”Java多线程第四十二章:获取线程与读写锁的保持数

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十二章:获取线程与读写锁的保持数 下一章 "全栈2019"Java多线程第四十三章:查询是否有线程在等待读写锁 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&quo

“全栈2019”Java多线程第四十六章:判断任意线程是否已持有写锁

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十六章:判断任意线程是否已持有写锁 下一章 "全栈2019"Java多线程第四十七章:判断锁是否为公平锁isFair() 学习小组 加入同步学习小组,共同交流与进步. 方式一:加入编程圈子. 方式二:关注头条号Gorhaf,私信"Java学习小组". 方式三:关

“全栈2019”Java多线程第四十七章:判断锁是否为公平锁isFair()

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十七章:判断锁是否为公平锁isFair() 下一章 "全栈2019"Java多线程第四十八章:读写锁实战高并发容器 学习小组 加入同步学习小组,共同交流与进步. 方式一:加入编程圈子. 方式二:关注头条号Gorhaf,私信"Java学习小组". 方式三:关注公众

Java多线程(四)、线程池(转)

Java多线程(四).线程池 分类: javaSE综合知识点 2012-09-19 17:46 3943人阅读 评论(1) 收藏 举报 系统启动一个新线程的成本是比较高的,因为它涉及到与操作系统的交互.在这种情况下,使用线程池可以很好的提供性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池. 与数据库连接池类似的是,线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象传给线程池,线程池就会启动一条线程来执行该对象的run方法,当run方法执行结束后,该线

“全栈2019”Java多线程第四章:设置和获取线程名称

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四章:设置和获取线程名称 下一章 "全栈2019"Java多线程第五章:线程睡眠sleep()方法详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Jav

java多线程系列(四)

Lock的使用 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我的理解能让知识更加简单易懂. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 java多线程系列(三)之等待通知机制 java多线程系列(四)之ReentrantLock的使用 ReentrantLock(重入锁) public class

敏捷软件开发(3)---COMMAND 模式 &amp; Active Object 模式

COMMAND 模式 command模式非常简单,简单到你无法想象的地方. public interface Command { void execute(); } 这就是一个command模式的样子.也许你会觉得,这有点多此一举吗.但是当你使用他的时候,command模式就会闪现光华. 这样一个场景:经理张三叫leader王二去开发一个项目, 王二就安排李四 去开发这个功能A. 李四何时执行,怎么执行就是他自己的事情了. UML图如上所示: 代码如下: public interface Com

Java多线程(四)之ConcurrentSkipListMap深入分析

一.前言 concurrentHashMap与ConcurrentSkipListMap性能测试 在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右. 但ConcurrentSkipListMap有几个ConcurrentHashMap 不能比拟的优点: 1.ConcurrentSkipListMap 的key是有序的. 2.ConcurrentSkipListMap 支持更高的并发.ConcurrentSkipLi

JAVA多线程(四)模式-Immutable

Immutable 多线程共享一个资源,该资源本身是不可变的,所以可以被安全的共享. 适用环境 共享不需要动态变更的资源的时候,比如一些固定的计算参数. 样例 邮递员看门牌号:一群邮递员看一个门牌号. 门牌号 package Immutable; public class HouseNumber { private final String number="12345678"; public String getNumber(){ return this.number; } } 邮递员