摘要: ReentrantLock ReentrantLock,一个可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 ReentrantLock基本用法 先来看一下ReentrantLock的基本用法: 看一下运行结果: 没有任何的交 阅读全文
posted @ 2015-10-04 23:00 五月的仓颉 阅读(21506) 评论(6) 推荐(10) 编辑
摘要: ThreadLocal的作用 从上一篇对于ThreadLocal的分析来看,可以得出结论:ThreadLocal不是用来解决共享对象的多线程访问问题的,通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象,其他线程不需 阅读全文
posted @ 2015-10-04 21:34 五月的仓颉 阅读(24039) 评论(13) 推荐(8) 编辑
摘要: ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结,讲解ThreadLocal采取这样的思路。 三个理论基础 在剖析Thr 阅读全文
posted @ 2015-10-04 18:41 五月的仓颉 阅读(8122) 评论(10) 推荐(4) 编辑
摘要: WeakReference弱引用概述 http://www.cnblogs.com/xrq730/p/4836700.html,关于Java的四种引用状态具体请参看此文 Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。 阅读全文
posted @ 2015-10-04 16:40 五月的仓颉 阅读(3403) 评论(3) 推荐(0) 编辑
摘要: 轮询 线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作。 想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处理?一个办法就是,B线程while(i == 10000),这样两个线程之间就有了通信,B线程不断通 阅读全文
posted @ 2015-10-04 13:00 五月的仓颉 阅读(10604) 评论(8) 推荐(7) 编辑