摘要: 注意:转载自并发编程网,java nio系列教程 1、Buffer Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组 阅读全文
posted @ 2017-06-08 09:46 寰殇丶天使 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 注意:转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(二) Channel Channel Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buff 阅读全文
posted @ 2017-06-08 09:17 寰殇丶天使 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 注意: 转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(一) Java NIO 概述 JAVA-1NIO概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看 阅读全文
posted @ 2017-06-08 09:16 寰殇丶天使 阅读(246) 评论(0) 推荐(0) 编辑
摘要: Fork/Join JAVA7中出现的Fork/Join,类似于分布式文件系统hadoop的mapreduce思想,就是将任务分割,再分割,直到分割到满足条件 为了便于理解:编程逻辑可以借用 递归的思想,层层递归,直到碰到最终调件,然后层层返回;而在Fork/Join中就是,类似把每个递归的方法,单 阅读全文
posted @ 2017-06-07 17:51 寰殇丶天使 阅读(369) 评论(0) 推荐(0) 编辑
摘要: JAVA内存模型 在多线程这一系列中,不去探究内存模型的底层 一、什么是内存模型,为什么需要它 在现代多核处理器中,每个处理器都有自己的缓存,定期的与主内存进行协调; 想要确保每个处理器在任意时刻知道其他处理器正在进行的工作,将需要很大的开销;且通常是没必要的 我们只有在需要跨线程共享数据时,才需要 阅读全文
posted @ 2017-06-06 15:30 寰殇丶天使 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 原子变量和非阻塞的同步机制 一、锁的劣势 1.在多线程下:锁的挂起和恢复等过程存在着很大的开销(及时现代的jvm会判断何时使用挂起,何时自旋等待) 2.volatile:轻量级别的同步机制,但是不能用于构建原子复合操作 因此:需要有一种方式,在管理线程之间的竞争时有一种粒度更细的方式,类似与vola 阅读全文
posted @ 2017-06-06 11:31 寰殇丶天使 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 构建自定义同步工具 一、通过轮询与休眠的方式实现简单的有界缓存 二、通过条件队列:wait notify方法 注意:实际逻辑与上面没区别;且无法通过轮询和休眠方式实现的,也无法通过条件队列实现 三、内置条件队列的使用 条件谓词:对象在哪个条件下等待 条件队列:每次唤醒时,必须重新检查条件谓词 四、显 阅读全文
posted @ 2017-06-05 18:02 寰殇丶天使 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 显式锁 一、Lock与ReentrantLock Lock提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操作,所有的加锁和解锁方法都是显式的 ReentrantLock实现了Lock:并提供了和synchronized相同的内存语义;同时提供了可重入的加锁语义 1.基本语义: 2.轮询锁与定 阅读全文
posted @ 2017-06-05 15:35 寰殇丶天使 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 并发程序测试 一、正确性测试 如:对一个自定义缓存的测试 阅读全文
posted @ 2017-06-05 14:00 寰殇丶天使 阅读(1347) 评论(0) 推荐(0) 编辑
摘要: 性能与可伸缩性 一、Amdahl定律 1.问题和资源的关系 在某些问题中,资源越多解决速度越快;而有些问题则相反: 注意:每个程序中必然有串行的部分,而合理的分析出串行和并行的部分对程序的影响极大;串行部分占比和多核执行效率之间是指数级别的关系 2.ConcurrentLinkedQueue 在多核 阅读全文
posted @ 2017-06-04 11:41 寰殇丶天使 阅读(307) 评论(0) 推荐(0) 编辑