Java 并发编程 第3页

Java 并发编程,包括 Java 并发核心理论知识,JUC源码分析,囊括 Java 并发编程方方面面

【J.U.C】LockSupport

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

文章首发于:clawhub.club LockSupport是用于创建锁和其他同步类的阻塞原语,通过调用Unsafe函数中的接口实现阻塞和解除阻塞的。 pack 方法 解释 park(Object) 挂起当前线程 parkNanos(Obj...

【J.U.C】LongAdder与AtomicLong

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

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

【SharingObjects】ThreadLocal

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

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

【锁】Condition接口分析

chenssy阅读(879)评论(0)赞(1)

文章首发于:clawhub.club Condition是用来代替传统Object中的wait()和notify()实现线程间的协作,Condition的await()和signal()用于处理线程间协作更加安全与高效,JAVA中的阻塞队列...

【锁】ReadWriteLock之简单分析

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

文章首发于:clawhub.club ReadWriteLock包含一对关联的锁,一个用于只读,另一个用于写。readLock只要没有写者,可以同时被多个读线程所有, writeLock是独占的。 writeLock操作的内存同步效果对关联...

【锁】分类

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

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

【AQS】Condition接口的实现

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

文章首发于:clawhub.club 同步队列与条件队列 sync queue 同步队列.png 同步队列是双向链表,使用prev和next来连接节点,nextWaiter属性只是一个标志作用,共享锁模式下使用。 入队时没有锁 -> ...

【AQS】共享锁的释放

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

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

【AQS】共享锁的获取

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

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

【AQS】独占锁的释放

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

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