并发编程
文章平均质量分 88
goalietang
15年IT java运维,开发,需求,设计,管理。
展开
-
[JUC] 通过ReentrantLock源码理解AQS的原理 (二)
四、通过ReentrantLock理解AQS原理2.ReentrantLock加锁机制:在上篇文章学习到了- 创建ReentrantLock对象-初次加锁的逻辑- 同一线程第二次加锁 (可重入性)的逻辑。现在我们回到我们最初的代码。public class ReentrantLockDemo1 { private static ReentrantLock lock = new ReentrantLock(); public static void main..原创 2021-07-19 01:44:26 · 119 阅读 · 0 评论 -
[JUC] 通过ReentrantLock源码理解AQS的原理 (一)
public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable { ...... static final class Node {...} private transient volatile Node head; private transient volatile Node tail;.原创 2021-07-19 00:34:37 · 128 阅读 · 0 评论 -
[JUC] sun.misc.Unsafe的原理 【转载】
什么是UnsafeUnsafe类在JDK源码中被广泛使用,在Spark使用off-heap memory时也会使用到,该类功能很强大,涉及到类加载机制,其实例一般情况是获取不到的,源码中的设计是采用单例模式,不是系统加载初始化就会抛出SecurityException异常。这个类的提供了一些绕开JVM的更底层功能,基于它的实现可以提高效率。(通常是直接操作内存)但是,它是一把双刃剑:正如它的名字所预示的那样,它是Unsafe的,它所分配的内存需要手动free(不被GC回收)。如果对Unsafe类理解转载 2021-07-12 23:25:39 · 141 阅读 · 0 评论 -
[JUC] Java Util Concurrent包的认识
jDK1.5开始,java增加了对并发处理的包java.util.concurrent. 该包在很多并发需求下有大量的使用需要。所以应该更多的去了解包的内容。下面是这个包的结构图。该包下面主要分5部分:collections:并发相关的集合的工具。如List,Set,Map和Queue tools:并发所用到的一些常用工具,这部分因为常常用到,所以需要牢记。 locks:并发用到的锁的概念,相对于synchronized隐式锁更加强大与灵活,并且对锁的操作花费的代价更低。要想在并发开发过程.原创 2021-07-12 16:40:42 · 138 阅读 · 0 评论 -
[多线程]Synchronized与java.util.concurrent.locks.Lock
我们学习的时候常常使用Synchronized关键字来做代码块或者方法等资源的同步操作。但是java.util.concurrent包中也提供了lock对象来手动的为自己的代码加锁。下面有相关的不同点,仅供参考:1.Synchronized: java内置关键字, Lock 是一个java util包下的类2.Synchronized: 无法判断获取锁的状态, Lock可以判断是否获取到了锁3.Synchronized: 会自动释放锁, Lock必须要手动释放锁,如果不释放,会造成死...原创 2021-07-04 23:48:05 · 227 阅读 · 0 评论 -
[JUC] LockSupport 相关原理和使用的学习
一、什么是LockSupportLockSupport是java.util.concurrent.locks包下面的一个类。在java并发包下各种同步组件的底层实现中,LockSupport的身影处处可见。JDK中的定义为用来创建锁和其他同步类的线程阻塞原语。我们可以使用它来阻塞和唤醒线程,功能和wait,notify有些相似,但是LockSupport比起wait,notify功能更强大,也好用的多。并发组件和并发工具大都是基于AQS来实现的, AQS就是AbstractQueuedSynchro原创 2021-07-13 01:19:16 · 242 阅读 · 0 评论