
jdk源码解析
timy07
这个作者很懒,什么都没留下…
展开
-
LongAdder与AtomicLong
AtomicLong的原理是依靠底层的cas来保障原子性的更新数据,在要添加或者减少的时候,会使用自循(CLH)方式不断地cas到特定的值,从而达到更新数据的目的。然而在线程竞争激烈的情况下,自循往往浪费很多计算资源才能达成预期效果。 面对自循的缺点,jdk1.8推出了LongAdder类,他的实现方式有点像concurrentHashMap一样,采用空间换时间的方式,...原创 2018-04-18 10:34:53 · 685 阅读 · 0 评论 -
jdk之原子类AtomicXXXX(预备篇)
在介绍jdk原子类之前,我们先介绍一个非常重要的知识点:Unsafe类1:Unsafe是什么 Java自己是不能直接访问底层操作系统,如果要访问该怎么办呢?Unsafe类恰恰这个能力,能直接原子性的,硬件级别的提供该能力。 Unsafe类使Java拥有了像C语言的指针一样操作内存空间的能力,同时也带来了指针的问题。过度的使用Unsafe类会使得出错的几率变大,因此Java官方...原创 2018-04-23 12:06:52 · 323 阅读 · 0 评论 -
jdk lock 之ReentrantLock 、AbstractQueuedSynchronizer( AQS)
锁的独占与共享 java并发包提供的加锁模式分为独占锁和共享锁,独占锁模式下,每次只能有一个线程能持有锁,ReentrantLock就是以独占方式实现的互斥锁。共享锁,则允许多个线程同时获取锁,并发访问 共享资源,如:ReadWriteLock。AQS的内部类Node定义了两个常量SHARED和EXCLUSIVE,他们分别标识 AQS队列中等待线程的锁获取模式。 很显然,独占锁是...原创 2018-05-04 11:19:15 · 241 阅读 · 0 评论 -
jdk之原子类AtomicXXXX
假设你已经阅读并理解和《jdk原子类AtomicXXXX(预备篇)》,基于以上的理解,现在我们一起来研读jdk原子类。jdk原子类的实现方式总体很类似,因此我们选择一个比较具有代表性的AtomicLong来研读,学习就是要做到一通百通。AtomicLong是什么AtomicLong它提供了一些原子性的操作来操作Long类,十分适合在多线程、高并发情况下使用。对Long的操作,不使用AtomicLo...原创 2018-04-28 12:56:45 · 465 阅读 · 0 评论