标签:Java 并发编程

第3页
Java 并发编程

【J.U.C】LongAdder与AtomicLong

chenssy阅读(395)评论(0)赞(0)

前一阵子看ConcurrentHashMap的源码,其中计数部分提及到LongAdder,之后看了一下LongAdder,发现他们实现的思路是一样的,都是将单节点的并发分散到多个节点。 LongAdder的使用场景也就适用于高并发的情形。比...

Java 并发编程

【SharingObjects】ThreadLocal

chenssy阅读(333)评论(0)赞(0)

描述 该类提供了线程局部(thread-local)变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其get或set方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal实例通常是类中的privat...

Java 并发编程

【锁】分类

chenssy阅读(309)评论(0)赞(0)

文章首发于:clawhub.club 公平锁/非公平锁 公平锁是指多线程按照申请锁的顺序来获取锁,非公平锁指多个线程获取锁的顺序不是按照申请锁的顺序,有可能造成优先级反转或者饥饿现象, 非公平锁的优点在于吞吐量比公平锁大,Reentrant...

Java 并发编程

【AQS】共享锁的释放

chenssy阅读(377)评论(0)赞(0)

文章首发于:clawhub.club 共享锁的释放的主要方法doReleaseShared()已经在共享所的获取中简单的分析了一下,可见共享锁触发唤醒后记节点的行为有两处:第一,当前节点成功获取共享锁后,第二,当前节点释放共享锁后。 下面分...

Java 并发编程

【AQS】共享锁的获取

chenssy阅读(469)评论(0)赞(0)

文章首发于:clawhub.club 共享锁的获取与独占锁很像,他们的区别就是当独占锁已经被某个线程持有时,其他线程只能等待它被释放后,才能去争锁,并且同一时刻只有一个线程能争锁成功。 而共享锁再获取锁之后,其他线程就可以去争锁,所以会有一...

Java 并发编程

【AQS】独占锁的释放

chenssy阅读(437)评论(0)赞(0)

文章首发于:clawhub.club 上一次写独占锁的获取,写到当前线程被挂起之后就结束了,那么什么时候才能唤醒这个线程呢?这次来分析独占锁的释放。JAVA中的内置锁在线程退出临界区时会自动释放锁,而ReentrantLock之类的显示锁,...

Java 并发编程

【AQS】独占锁与共享锁

chenssy阅读(911)评论(0)赞(0)

文章首发于:clawhub.club AQS的源码中涉及到的锁有独占锁与共享锁,独占锁就是只有一个线程可以获取锁,共享锁就是同时可以有多个线程获取锁。 代码层体现下AQS的state属性,为0,则锁没有被线程所持有,独占锁时为1,共享锁时大...

Java 并发编程

【AQS】核心实现

chenssy阅读(491)评论(0)赞(0)

文章首发于:clawhub.club AQS(AbstractQueuedSynchronizer)是Java并发工具的基础,采用乐观锁,通过CAS与自旋轻量级的获取锁。 下面简单分析一下他的核心实现: 核心属性 锁相关属性: /** * ...