juc
_浪子
虽身处黑暗,然心向光明。
开源源码分析群:399731140
展开
-
LockSupport源码分析(JDK 1.7)
LockSupport是用来创建锁和其他同步类的基本线程阻塞基本体(primitives)。通过调用LockSupport的park方法可以申请一个许可,如果当前许可可用的话,那么则立即返回,否则则阻塞等待许可。直到另外一个线程调用unpark方法对被阻塞的线程的许可进行释放。(默认许可阻塞)park方法还支持Blocker对象参数,在调用park方法对当前线程进行阻塞时候,可以把Blocker对象原创 2015-11-24 17:59:16 · 1917 阅读 · 2 评论 -
ReentrantReadWriteLock源码分析(JDK 1.7)
ReentrantReadWriteLock是ReadWriteLock接口的具体实现类。ReadWriteLock描述: ReadWriteLock维护了一组相对应的锁。只读锁和写锁。只要没有写操作,那么只读锁可以同时被多个线程所持有(并发访问共享数据)。写锁是独占锁,同一时刻只允许一个线程持有。所有的ReadWriteLock实现类一定要保证writeLock操作的内存同步效果。如果一个线程成原创 2015-12-29 14:01:09 · 1683 阅读 · 0 评论 -
FutureTask源码分析(JDK 1.7)
FutureTask只实现RunnableFuture接口: 该接口继承了java.lang.Runnable和Future接口,也就是继承了这两个接口的特性。 1.可以不必直接继承Thread来生成子类,只要实现run方法,且把实例传入到Thread构造函数,Thread就可以执行该实例的run方法了( Thread(Runnable) )。 2.可以让任务独立执行,原创 2015-12-30 15:13:20 · 3067 阅读 · 1 评论 -
ReentrantLock源码分析(JDK 1.7)
eentrantLock是一个可重入的互斥锁(独占锁),它和隐式锁(使用Synchronized修饰的方法)一样有着相同的功能和语义。但是ReentrantLock还扩展了一些特别功能。ReentrantLock属于最后一个成功lock的线程,且在该线程未释放(unlock)之前。 成功获取lock分为下面两种情况 1.在当前没有任何其他线程拥有锁(lock过且未unlock)情况下,一个线程调原创 2015-12-22 22:28:58 · 1257 阅读 · 0 评论 -
线程池(ThreadPoolExecutor JDK1.7)
平常我们经常都会使用到线程池,但是有没考虑过为什么需要使用线程池呢?下面我列举一下问题,大家可以思考一下 1.当前服务器的硬件环境是多少核的CPU,它和线程的关系又是什么? 2.jvm能创建多少个线程? 3.多线程主要解决什么问题? 4.你使用线程池的目的是什么? 以上几个问题都是帮助你更好的使用java的线程(还可以衍生更多的小问题,如:jvm维护线程的消原创 2016-05-08 15:17:37 · 7821 阅读 · 9 评论 -
AQS源码分析(AbstractQueuedSynchronizer)
前言:最近在学习AQS源码,学习过程中也查找过很多资料,但是大都只是翻译了源码的英文意思,并没有对一些难点做出分析和对AQS的队列结构进行讲解。所以我打算写下这篇文章,希望能帮助到有需要的人。 下面我说下我学习AQS源码的过程。如果文章有错误的地方,还望指出。谢谢1.AQS介绍 AQS是为实现依赖于先进先出 (FIFO) 等待队列 的阻塞锁和相关同步器(信号量、事件,等等原创 2015-11-27 14:38:41 · 5270 阅读 · 0 评论