2014年3月3日

zz 聊聊并发(五)

摘要: 1. 引言原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。2. 术语定义术语英文解释缓存行Cache line缓存的最小操作单位比较并交换Compare and SwapCAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较下旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换。CPU流水线CPU pipelineCPU流水线 阅读全文

posted @ 2014-03-03 17:36 aiguang 阅读(132) 评论(0) 推荐(0) 编辑

zz 聊聊并发(四)

摘要: 术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。线程不安全的HashMap因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码final HashMap map = new HashMap(2);Threa 阅读全文

posted @ 2014-03-03 16:53 aiguang 阅读(190) 评论(0) 推荐(0) 编辑

zz 聊聊并发(三)

摘要: 1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。2. 线程池的使用线程池的创建我们可以通过ThreadPoolExecutor来创建一个线程池。new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepA. 阅读全文

posted @ 2014-03-03 16:42 aiguang 阅读(144) 评论(0) 推荐(0) 编辑

zz 聊聊并发(二)

摘要: 1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。2 术语定义术语相关厂商内容高德地图街景API发布,开放全部街景数据及功能(FREE)《走出软件作坊》作者吕建伟(阿朱)出品QCon北京2014“构建高效能团队”专题JavaOne Duke大奖得主郑晔确认参加QCon北京,分享《你应该更新的Java知识》支付宝、天猫前端开发负 阅读全文

posted @ 2014-03-03 16:13 aiguang 阅读(154) 评论(0) 推荐(0) 编辑

zz 聊聊并发(一)

摘要: 引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能帮助我们正确的使用Volatile变量。相关厂商内容StackOverFlow核心开发组工程师Marco分享《SO架构分析》、《SO本地化》侧重业务,引领技术;开放竞合,不忘初心——ArchSummit2 阅读全文

posted @ 2014-03-03 15:55 aiguang 阅读(226) 评论(0) 推荐(0) 编辑

导航