自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Jdk1.6 JUC源码解析(25)-ConcurrentHashMap

Jdk1.6 JUC源码解析(25)-ConcurrentHashMap作者:大飞 功能简介:ConcurrentHashMap是一种线程安全的HashMap。相对于HashTable和Collections.synchronizedMap(),ConcurrentHashMap具有更好的性能和伸缩性,是由于其使用了分段锁的策略,将内部数据分为多个段,每个段单独加锁,而不...

2015-10-30 19:02:33 153

原创 Jdk1.6 集合框架源码解析汇总

Jdk1.6 集合框架源码解析汇总 非并发:       Jdk1.6 Collections Framework源码解析(1)-ArrayList       描述:动态扩容的数组。        Jdk1.6 Collections Framework源码解析(2)-LinkedList       描述:双向链表。              Jdk...

2015-10-29 22:05:26 190

原创 Jdk1.6 JUC源码解析(24)-ConcurrentLinkedQueue

Jdk1.6 JUC源码解析(24)-ConcurrentLinkedQueue作者:大飞 功能简介:ConcurrentLinkedQueue是一种基于单向链表实现的无界的线程安全队列。队列中的元素遵循先入先出(FIFO)的规则。新元素插入到队列的尾部,从队列头部取出元素。ConcurrentLinkedQueue内部采用一种wait-free(无等待)算法来实现。...

2015-10-29 19:02:50 179

原创 Jdk1.6 JUC源码解析(23)-CopyOnWriteArrayList、CopyOnWriteArraySet

Jdk1.6 JUC源码解析(23)-CopyOnWriteArrayList、CopyOnWriteArraySet作者:大飞 功能简介:CopyOnWriteArrayList是一种线程安全的ArrayList。顾名思义,有写操作时,就会copy一个新的内部数组出来替换掉旧的数组。这样做的好处是,遍历操作不用加锁了,但是遍历的数组不会感知即时变更,只是一个快照。在某些场...

2015-10-29 18:55:33 134

原创 Jdk1.6 JUC源码解析(22)-LinkedBlockingDeque

Jdk1.6 JUC源码解析(22)-LinkedBlockingDeque作者:大飞 功能简介:LinkedBlockingDeque是一种基于双向链表实现的有界的(可选的,不指定默认int最大值)阻塞双端队列。       双端队列一般适用于工作密取模式,即每个消费者都拥有自己的双端队列,如果某个消费者完成了自己队列的全部任务,可以到其他消费者双端队列尾部秘密获...

2015-10-29 18:47:49 161

原创 Jdk1.6 JUC源码解析(21)-ExecutorCompletionService

Jdk1.6 JUC源码解析(21)-ExecutorCompletionService作者:大飞 功能简介:ExecutorCompletionService用于执行一批任务,然后按照任务执行完成的顺序来获取任务结果。你甚至可以在获取到了若干个执行结果后,把其他的任务取消掉(ThreadPoolExecutor中的invokeAny就是通过这货实现的)。比如这样的场景:你...

2015-10-28 19:37:04 138

原创 Jdk1.6 JUC源码解析(20)-Executors

Jdk1.6 JUC源码解析(20)-Executors作者:大飞 功能简介:Executors是JUC包提供的一个工具性质的帮助类,它针对ExecutorService、ScheduledExecutorService、ThreadFactory和Callable提供了一系列工厂方法和工具方法。源码分析:首先看下针对ExecutorService提供的一些...

2015-10-28 19:28:37 132

原创 Jdk1.6 JUC源码解析(19)-ScheduledThreadPoolExecutor

Jdk1.6 JUC源码解析(19)-ScheduledThreadPoolExecutor作者:大飞 功能简介:ScheduledThreadPoolExecutor是一种类似Timer的定时器或者说是调度器,和Timer比起来主要有几点好处:1.多线程的定时调度,timer是单线程的,每个timer实例只有一个工作线程。2.由于继承自ThreadPoolExecutor...

2015-10-27 19:46:14 184

原创 Jdk1.6 JUC源码解析(18)-DelayQueue

Jdk1.6 JUC源码解析(18)-DelayQueue作者:大飞 功能简介:DelayQueue是一种无界的阻塞队列,队列里只允许放入可以"延期"的元素,队列中列头的元素是最先"到期"的元素。如果队列中没有任何元素"到期",尽管队列中有元素,也不能从队列头获取到任何元素。源码分析:首先还是看一下内部数据结构:public class DelayQ...

2015-10-27 19:25:36 167

原创 Jdk1.6 JUC源码解析(17)-ThreadPoolExecutor

Jdk1.6 JUC源码解析(17)-ThreadPoolExecutor作者:大飞 功能简介:ThreadPoolExecutor是JUC包中提供的线程池,使用ThreadPoolExecutor的好处一方面是能重用线程资源,避免重复创建线程带来的开销;另一方面是ThreadPoolExecutor提供了内部资源(线程、任务)的管理功能,方便我们监控线程池工作状态。...

2015-10-27 08:44:32 176

原创 Jdk1.6 JUC源码解析(16)-FutureTask

Jdk1.6 JUC源码解析(16)-FutureTask作者:大飞 功能简介:FutureTask是一种异步任务(或异步计算),举个栗子,主线程的逻辑中需要使用某个值,但这个值需要复杂的运算得来,那么主线程可以提前建立一个异步任务来计算这个值(在其他的线程中计算),然后去做其他事情,当需要这个值的时候再通过刚才建立的异步任务来获取这个值,有点并行的意思,这样可以缩短整个...

2015-10-26 19:31:50 334

原创 Jdk1.6 JUC源码解析(15)-SynchronousQueue

Jdk1.6 JUC源码解析(15)-SynchronousQueue作者:大飞 功能简介:SynchronousQueue是一种特殊的阻塞队列,它本身没有容量,只有当一个线程从队列取数据的同时,另一个线程才能放一个数据到队列中,反之亦然。存取过程相当于一个线程把数据(安全的)交给另一个线程的过程。SynchronousQueue也支持公平和非公平模式。源码分析...

2015-10-26 19:19:10 147

原创 Jdk1.6 JUC源码解析(14)-PriorityBlockingQueue

Jdk1.6 JUC源码解析(14)-PriorityBlockingQueue作者:大飞 功能简介:PriorityBlockingQueue是一种基于PriorityQueue实现的无界的阻塞队列。队列中的元素按照某种排序规则出队。插入队列的元素必须是可比较的。源码分析:首先看下PriorityBlockingQueue内部的数据结构: pu...

2015-10-25 03:22:36 136

原创 Jdk1.6 JUC源码解析(13)-LinkedBlockingQueue

Jdk1.6 JUC源码解析(13)-LinkedBlockingQueue作者:大飞 功能简介:LinkedBlockingQueue是一种基于单向链表实现的有界的(可选的,不指定默认int最大值)阻塞队列。队列中的元素遵循先入先出(FIFO)的规则。新元素插入到队列的尾部,从队列头部取出元素。(在并发程序中,基于链表实现的队列和基于数组实现的队列相比,往往具有更高的吞...

2015-10-24 22:28:15 149

原创 Jdk1.6 JUC源码解析(12)-ArrayBlockingQueue

Jdk1.6 JUC源码解析(12)-ArrayBlockingQueue作者:大飞 功能简介:ArrayBlockingQueue是一种基于数组实现的有界的阻塞队列。队列中的元素遵循先入先出(FIFO)的规则。新元素插入到队列的尾部,从队列头部取出元素。和普通队列有所不同,该队列支持阻塞操作。比如从空队列中取元素,会导致当前线程阻塞,直到其他线程将元素放入队列;将元...

2015-10-23 20:03:48 114

原创 Jdk1.6 JUC源码解析(11)-CyclicBarrier

Jdk1.6 JUC源码解析(11)-CyclicBarrier作者:大飞 功能简介:CyclicBarrier是一种可重复使用的栅栏机制,可以让一组线程在某个点上相互等待,这个点就可以类比为栅栏。并且这个栅栏是可重复使用的,这点可以和前面分析过的CountDownLatch做对比,CountDownLatch只能用一次。CyclicBarrier还支持在所有线程到达...

2015-10-23 19:56:06 136

原创 Jdk1.6 JUC源码解析(10)-Semaphore

Jdk1.6 JUC源码解析(10)-Semaphore作者:大飞 功能简介:Semaphore是一种基于计数的信号量,管理了一组许可。线程可以申请许可,当信号量中有许可时,线程申请成功,拿走一个许可;没有许可时,线程阻塞等待其他线程用完了许可,归还给信号量。这个许可不是真正的许可(比如凭证),只是一个计数,线程也不会真正使用这些许可。Semaphore一般用来构建一...

2015-10-22 18:52:09 152

原创 Jdk1.6 JUC源码解析(9)-CountDownLatch

Jdk1.6 JUC源码解析(9)-CountDownLatch作者:大飞 功能简介:CountDownLatch是一种锁,称为闭锁。可以让一个或多个线程等待另外一个或多个线程执行完毕后再执行。CountDownLatch也是基于AQS构建,使用共享模式。CountDownLatch中提供一个count值来表示要等待的(其他任务)完成次数,常规用法有两种:Coun...

2015-10-22 18:47:02 229

原创 Jdk1.6 JUC源码解析汇总

Jdk1.6 JUC源码解析汇总 Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX Jdk1.6 JUC源码解析(2)-atomic-AtomicXXXArray Jdk1.6 JUC源码解析(3)-atomic-AtomicXXXFieldUpdater Jdk1.6 JUC源码解析(4)-atomic-AtomicStampedRefer...

2015-10-21 19:24:26 284

原创 Jdk1.6 JUC源码解析(8)-locks-ReentrantReadWriteLock

Jdk1.6 JUC源码解析(8)-locks-ReentrantReadWriteLock作者:大飞 功能简介:ReentrantReadWriteLock提供了读写锁的机制,读锁使用AQS的共享模式,写锁使用独占模式。ReentrantReadWriteLock也支持公平/非公平锁。ReentrantReadWriteLock的写锁会阻塞读锁和写锁,读锁只会阻...

2015-10-21 18:41:38 175

原创 Jdk1.6 JUC源码解析(7)-locks-ReentrantLock

Jdk1.6 JUC源码解析(7)-locks-ReentrantLock作者:大飞 功能简介:Java代码层面提供的锁机制,可做为Synchronized(jvm内置)的替代物,和Synchronized一样都是可重入的。与Synchronized相比较而言,ReentrantLock有以下优势:支持公平/非公平锁、支持可中断的锁、支持非阻塞的tryLock(可超时...

2015-10-21 18:25:25 106

原创 Jdk1.6 JUC源码解析(6)-locks-AbstractQueuedSynchronizer

Jdk1.6 JUC源码解析(6)-locks-AbstractQueuedSynchronizer作者:大飞 功能简介:AbstractQueuedSynchronizer(以下简称AQS)是Java并发包提供的一个同步基础机制,是并发包中实现Lock和其他同步机制(如:Semaphore、CountDownLatch和FutureTask等)的基础。AQS内部包含...

2015-10-20 20:12:03 209

原创 Jdk1.6 JUC源码解析(5)-locks-LockSupport

Jdk1.6 JUC源码解析(5)-locks-LockSupport作者:大飞 功能简介:LockSupport是用于构建锁和其他同步机制的基础类,提供了基本的线程阻塞行为。源码分析:看下LockSupport代码:public class LockSupport { private LockSupport() {} // Cannot b...

2015-10-20 20:08:57 211

原创 Jdk1.6 JUC源码解析(4)-atomic-AtomicStampedReference、AtomicMarkableReference

Jdk1.6 JUC源码解析(4)-atomic-AtomicStampedReference、AtomicMarkableReference作者:大飞 功能简介:为了避免CAS过程中的ABA问题,并发包提供了两个类,AtomicStampedReference和AtomicMarkableReference。前者相当于一个[引用,integer]的二元组,后者相当于一个[引...

2015-10-19 19:23:39 170

原创 Jdk1.6 JUC源码解析(3)-atomic-AtomicXXXFieldUpdater

Jdk1.6 JUC源码解析(3)-atomic-AtomicXXXFieldUpdater作者:大飞 功能简介:原子域更新器,一般用于一些原子同步结构中。 源码分析:首先看下AtomicIntegerFieldUpdater,AtomicIntegerFieldUpdater本身是一个抽象类,提供了一个静态工厂方法来生成实例:p...

2015-10-19 19:15:36 168

原创 Jdk1.6 JUC源码解析(2)-atomic-AtomicXXXArray

Jdk1.6 JUC源码解析(2)-atomic-AtomicXXXArray作者:大飞 功能简介:数组原子量。 源码分析:和原子量一样,数组原子量内部有一个Unsafe的静态引用。  private static final Unsafe unsafe = Unsafe.getUnsafe();    ...

2015-10-19 19:07:08 191

原创 Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX

Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX作者:大飞 功能简介:原子量和普通变量相比,主要体现在读写的线程安全上。对原子量的是原子的(比如多线程下的共享变量i++就不是原子的),由CAS操作保证原子性。对原子量的读可以读到最新值,由volatile关键字来保证可见性。原子量多用于数据统计(如接口调用次数)、一些序列生成(多线程环境下)以及...

2015-10-19 18:40:42 489

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除