并发
21世纪手艺人
Stop talk!Show me your code!!!!!
展开
-
java死锁的三个例子
例子1: 锁顺序引发的死锁private final Object left = new Object(); private final Object right = new Object(); public void leftRigth(){ synchronized (left){ synchronized (right)...原创 2019-04-25 14:11:53 · 945 阅读 · 0 评论 -
CLH锁的原理和实现
public class CLHLockV2 { /** * * 隐式节点类 * 作用:维持一个节点状态的字段。一个线程会对应一个节点 */ private static class CLHNodeV2 { /** * 默认状态为true - 即处于等待状态或者加锁成功(换言之,即此节点处于有效的一种状...原创 2019-06-06 12:35:05 · 256 阅读 · 0 评论 -
32位jdk volatile修饰long和double类型
32位jdk中long和double有什么问题?long和double是64位的,在32位的jdk中完成write操作是需要两次操作的(每次执行32位)。也就是long和double的write操作是非原子性的。非原子的操作在多线程环境下会有线程安全问题。比如A,B两个线程同时的去修改long类型x的值,可能x的高32位是A设置的,低32位是B设置的,导致结果不是程序想要的。为什么vola...原创 2019-07-29 19:20:28 · 1342 阅读 · 0 评论 -
jdk1.8 AbstractQueuedSynchronizer源码解析
/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * *//* * * * * * * Written by Doug Lea with assistance from ...原创 2019-09-20 20:12:45 · 248 阅读 · 0 评论 -
jdk1.8 LockSupport源码解析
/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * *//* * * * * * * Written by Doug Lea with assistance from ...原创 2019-09-20 20:14:06 · 233 阅读 · 0 评论 -
jdk1.8 ReentrantLock源码解析
本文主要讲了重入锁的文档说明,和核心代码的理解。在阅读之前需理解了AQS源码。后面的公平锁和非公平锁的实现都是基础此基础的。/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * *//* * * Written by Doug Lea with assistance from membe...原创 2019-09-20 20:15:20 · 163 阅读 · 0 评论