2014年3月7日

zz 深入浅出juc

摘要: http://www.blogjava.net/xylz/archive/2010/07/08/325587.html 阅读全文

posted @ 2014-03-07 23:12 aiguang 阅读(246) 评论(0) 推荐(0) 编辑

一个maven问题

摘要: maven-assembly-plugin false jar-with-dependencies com.sohu.tv.DMToCache ... 阅读全文

posted @ 2014-03-07 00:20 aiguang 阅读(190) 评论(0) 推荐(0) 编辑

2014年3月5日

zz 聊聊并发(七)——Java中的阻塞队列

摘要: 1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:方法\处理方式抛出异常返回特殊值一直阻塞超时退出插入方法add(e)offer(e)put(e)offer(e,time,unit)移除方法remove()poll()take()poll(time,unit)检 阅读全文

posted @ 2014-03-05 15:26 aiguang 阅读(187) 评论(0) 推荐(0) 编辑

聊聊并发(六)

摘要: 1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列ConcurrentLinkedQueue的,相信从大师身上我们能学到不少并发编程的技巧。2. ConcurrentLinkedQueue的介绍ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列 阅读全文

posted @ 2014-03-05 14:52 aiguang 阅读(270) 评论(0) 推荐(0) 编辑

jvm 内存参数

摘要: 运行时开关‘强制性’参数-verbose:gc——为用户输出一些GC信息-Xloggc:——指定日志输出路径,要确保磁盘有空间-XX:+PringGCDetails——为辅助工具提供“最低限度信息(Minimum information)”——用这个参数代替-verbose:gc--XX:PrintTenuringDistribution——“过早提升(Premature promotion)”信息基本堆大小参数-Xms—— 设置预留给堆的最小内存值-Xmx—— 设置预留给堆的最大内存值-XX:MaxPermSize=——设置永久代的最大内存值——有利于Spring应用程序和应用服务器以前,我 阅读全文

posted @ 2014-03-05 14:24 aiguang 阅读(591) 评论(0) 推荐(0) 编辑

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) 编辑

导航