JCTools, 场景特化的并发工具
同上一篇一样,在jmap -histo中发现MpscChunkedArrayQueue类的实例比较多,javadoc看了下,其原来是出自JC Tools,https://github.com/JCTools/JCTools。
通过官网,我们可以看到,它针对实际的场景对JDK自带的并发队列做了一些特定的优化,如下:
Java Concurrency Tools for the JVM. This project aims to offer some concurrent data structures currently missing from the JDK:
- SPSC/MPSC/SPMC/MPMC variations for concurrent queues: - SPSC - Single Producer Single Consumer (Wait Free, bounded and unbounded)
- MPSC - Multi Producer Single Consumer (Lock less, bounded and unbounded)
- SPMC - Single Producer Multi Consumer (Lock less, bounded)
- MPMC - Multi Producer Multi Consumer (Lock less, bounded)
 
- SPSC/MPSC linked array queues offer a balance between performance, allocation and footprint 
- An expanded queue interface (MessagePassingQueue): - relaxedOffer/Peek/Poll: trade off conflated guarantee on full/empty queue state with improved performance.
- drain/fill: batch read and write methods for increased throughput and reduced contention
 
不过整体浏览了下,文档较少,benchmark提供了用例但没有看到结果,真用到的时候,可以看下到底性能可以提升多少。有一文章对源码进行了分析(http://blog.csdn.net/youaremoon/article/details/50351929),不过说实话,不知道现在为什么很多人喜欢share源码分析,仅仅只是源码分析,对场景化的适用条件以及原理和实现机制倒是考虑的很少。举个例子,https://www.qcloud.com/community/article/904925001482373849?utm_source=Community&utm_medium=article904925001482373849&utm_campaign=kyzg就是一篇典型的文章,是为了说明看过源码了、还是理解了。通常,个人认为理解如何实现、适用场景及优缺点是同等重要的,否则就只顾赶路、却不关心自己在哪里了。
JCTools, 场景特化的并发工具的更多相关文章
- 并发工具类:CountDownLatch、CyclicBarrier、Semaphore
		在多线程的场景下,有些并发流程需要人为来控制,在JDK的并发包里提供了几个并发工具类:CountDownLatch.CyclicBarrier.Semaphore. 一.CountDownLatch ... 
- JUC学习笔记--JUC中并发工具类
		JUC中并发工具类 CountDownLatch CountDownLatch是我目前使用比较多的类,CountDownLatch初始化时会给定一个计数,然后每次调用countDown() 计数减1, ... 
- java 并发工具类CountDownLatch & CyclicBarrier
		一起在java1.5被引入的并发工具类还有CountDownLatch.CyclicBarrier.Semaphore.ConcurrentHashMap和BlockingQueue,它们都存在于ja ... 
- Java并发工具类 - CountDownLatch
		Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ... 
- java中的并发工具类
		在jdk的并发包里提供了几个非常有用的并发工具类.CountDownLatdch.CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线 ... 
- Java中的4个并发工具类 CountDownLatch CyclicBarrier Semaphore Exchanger
		在 java.util.concurrent 包中提供了 4 个有用的并发工具类 CountDownLatch 允许一个或多个线程等待其他线程完成操作,课题点 Thread 类的 join() 方法 ... 
- Java中的并发工具类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
		在JDK的并发包里提供了很多有意思的并发工具类.CountDownLatch.CyclicBarrier和Semaphore 工具类提供了一种并发流程控制的手段,Exchanger 工具类则提供了在线 ... 
- Java并发编程-并发工具类及线程池
		JUC中提供了几个比较常用的并发工具类,比如CountDownLatch.CyclicBarrier.Semaphore. CountDownLatch: countdownlatch是一个同步工具类 ... 
- 多线程学习笔记六之并发工具类CountDownLatch和CyclicBarrier
		目录 简介 CountDownLatch 示例 实现分析 CountDownLatch与Thread.join() CyclicBarrier 实现分析 CountDownLatch和CyclicBa ... 
随机推荐
- HDFS文件系统的JAVA-API操作(一)
			使用java.net.URL访问HDFS文件系统 HDFS的API使用说明: 1.如果要访问HDFS,HDFS客户端必须有一份HDFS的配置文件 也就是hdfs-site.xml,从而读取Nameno ... 
- HDU 4734 - F(x) - [数位DP][memset优化]
			题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 Time Limit: 1000/500 MS (Java/Others) Memory Lim ... 
- HDU 2602 - Bone Collector - [01背包模板题]
			题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Many years ago , in Teddy’s hometown there was a ... 
- Oracle管理监控之linux下wendba登录设置
			[root@localhost ~]# su - oracle [oracle@localhost ~]$ which jar/usr/bin/jar [oracle@localhost ~]$ ex ... 
- LoadRunner-关联问题(栏目列表较多关联不了想要的id)
			新建了课程后之后有很多栏目,每个栏目对应一个partid,但我只想要期中一个. http://*********/course/work/workInfo.action?hwid=1547&c ... 
- Python yield 使用浅析(转)
			add by zhj: 说到yield,就要说说迭代器.生成器.生成器函数. 迭代器:其实就是一个可迭代对象,书上说迭代器,我个人不喜欢这个说法,有点晦涩.可迭代对象基本上可以认为是有__iter__ ... 
- sql server中的日期详解使用(convert)
			转自:http://blog.csdn.net/hehe520347/article/details/48496853 有个字段值例如2012-07-02 00:00:00.000 转化成 2012- ... 
- 怎样在wordpress后台显示日志 ID
			有时我们需要在wordpress后台编辑特定的文章,找了大半天眼睛都花了,不禁会吐槽一下.有没有什么办法可以直接在日志列表查看日志 ID 呢?我们可以通过下面的代码实现: <?php /* Pl ... 
- java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server
			java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not creat ... 
- java-JProfiler(三)-进行本地JVM的性能监控-监视本地java程序
			1.打开JProfiler 默认会启动快速窗口[或者使用菜单Session→Start Center]打开 这里监视本地java程序,故在 主界面 2.查看监视界面 这时就可以查看 Instance ... 
