java多数据库开发evn,Java,在多线程evnironments中通过散列统一划分传入的工作
听起来你需要每个调度ID的FIFO排序,所以理想的情况是将调度队列作为抽象.这可以解释你对哈希关注不能提供统一分布的担忧,因为一些调度队列可能比其他队列更活跃,并且在工人之间不公平地平衡.通过将队列与worker分开,您可以保留FIFO语义并均匀地分散工作.
提供此抽象的非活动库是HawtDispatch.它与Java 6兼容.
一种非常简单的Java 8方法是使用CompletableFuture作为排队机制,使用ConcurrentHashMap进行注册,使用Executor(例如ForkJoinPool)进行计算.有关此想法的实现,请参阅EventDispatcher,其中注册是明确的.如果您的调度员更具动态性,那么您可能需要定期修剪地图.基本思路如下.
ConcurrentMap> dispatchQueues = ...
public CompletableFuture dispatch(String queueName, Runnable task) {
return dispatchQueues.compute(queueName, (k, queue) -> {
return (queue == null)
? CompletableFuture.runAsync(task)
: queue.thenRunAsync(task);
});
}
更新(JDK7)
上述想法的后端将与番石榴翻译成类似的东西,
ListeningExecutorService executor = ...
Striped locks = Striped.lock(256);
ConcurrentMap> dispatchQueues = ...
public ListenableFuture> dispatch(String queueName, final Runnable task) {
Lock lock = locks.get(queueName);
lock.lock();
try {
ListenableFuture> future = dispatchQueues.get(queueName);
if (future == null) {
future = executor.submit(task);
} else {
final SettableFuture next = SettableFuture.create();
future.addListener(new Runnable() {
try {
task.run();
} finally {
next.set(null);
}
}, executor);
future = next;
}
dispatchQueues.put(queueName, future);
} finally {
lock.unlock();
}
}
java多数据库开发evn,Java,在多线程evnironments中通过散列统一划分传入的工作相关推荐
- 数据库开发技术java方向_Java开发工程师(Web方向) - 03.数据库开发 - 第5章.MyBatis...
第5章--MyBatis MyBatis入门 Abstract: 数据库框架的工作原理和使用方法(以MyBatis为例) 面向对象的世界与关系型数据库的鸿沟: 面向对象世界中的数据是对象: 关系型数据 ...
- php java优劣_PHP开发和JAVA开发网站的优劣对比
PHP开发和JAVA开发网站的优劣对比有哪些?该篇文章由川软教育君整理并编辑: 1.开发网站最好选用一个比较成熟.资料比较多的CMS,因为自己开发后台工作量也不小,JAVA的CMS比PHP要少很多,所 ...
- Java并发编程(8):多线程环境中安全使用集合API(含代码)
在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...
- java上位机开发(java基础)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] java基础就是把java环境安装好,把基础程序构建起来.至少说让开发的同学来说有一点信心.从这 ...
- java删除数据库表格,《Java:数据库更新excel文件的数据同时删除数据库原来的数据》 excel表格如何删除相同数据库...
Java:数据库更新excel文件的数据同时删除数据库原来的数据 重新写入blob的byte[],就可以覆盖了....... excel表格怎么检查有重复的数据库 方/步骤 打开需要编辑的Excel表 ...
- SQL2K数据库开发七之表操作添加删除和修改列
1.在已有的表中添加.删除和修改列可以使用Transact-SQL中的ALTER TABLE语句,使用ALTER TABLE语句的语法为: 2.在SQL Server查询分析器中输入如下语句,往Pro ...
- java大数据开发训练营--Java Web 后端技术基础(上)
题记: 文章内容输出来源:拉勾教育大数据开发高薪训练营 本篇文章是java学习课程中的一部分笔记. 本博文主要是记录一些基础的知识点,通过实操更容易理解 这章主要讲的是JAVA Web后端基础 一 W ...
- Java微服务开发指南-Java环境下的微服务
本文涉及的内容,能让你学到什么? 本书适用于开发微服务的Java开发人员和架构师.我们在开始介绍微服务架构前,先讲述一些抽象的基本概念.不幸的是,使用新技术并不能神奇地解决分布式系统问题.但是我们通过 ...
- Java微服务开发指南 -- Java环境下的微服务
Java环境下的微服务 本文涉及的内容,能让你学到什么? 本书适用于开发微服务的Java开发人员和架构师.我们在开始介绍微服务架构前,先讲述一些抽象的基本概念.不幸的是,使用新技术并不能神奇地解决分布 ...
- java无框架开发,DON: java 小型web项目快速开发框架,实现无配置,直接关注业务开发.主要解决请求分发解析...
#DON框架介绍 ##目标 启动零配置快速进入开发 开发时,请求controller路由零配置 配合windfly.jar工具包快速开发 最终实现加入jar包即可快速开发 ##主要特点 无需配置请求u ...
最新文章
- java c 序列化_Java 序列化
- [LeetCode] Implement strStr()
- 一起学nRF51xx 17 - lpcomp
- Python入门100题 | 第078题
- Jquery中实现表单提交前的校验
- MCtalk对话学吧课堂:真正的K12在线教育才刚刚开始
- JavaScript函数节流和函数防抖
- html css 前端实现消息提醒数_自学的福音,web前端学习全套视频教程+最新学习思维导图都在这里...
- php中数组生成下拉选项,php数组生成html下拉列表的方法
- Java并发编程之线程安全性分析之原子性、可见性、有序性
- maven install 安装项目问题总结An unknown compilation problem occurred
- python刚出来多少薪资-2019 年Python工程师的平均薪资是多少?
- Django之路第四篇:Models
- Paraview快捷键操作
- java面向接口编程思想
- 基于Nginx,搭建HLS(HTTP Live Streaming)server,点播直播
- 小米手机qq不读取相册照片_【qq影像读取不了照片】qq影像读取不到相册_qq影像读取不了相册...
- react实现表头固定左侧,内容右侧循环,可换行
- Unity 多人签名
- 福晟集团用创新理念引领发展新趋势