摘要: 研究一下子JUC重要的 ReadWriteLock 原理 老规矩 先上Demo: readWriteLock 同时能创造读锁 和写锁两个锁。 读锁为共享锁,意思是多个线程都可以持有读锁 写锁是独占锁,意思是只能由一个线程持有这把锁 遵循的一个原则: 读锁有人持有了 不能再持有写锁, 写锁如果是自己占 阅读全文
posted @ 2020-11-18 18:21 六小扛把子 阅读(401) 评论(0) 推荐(0) 编辑
摘要: >> >>> << 位运算 i >> 1 表示 i的二进制 整体向右移动一位 i << 1 表示 i的二进制 整体向左移动一位 i >>> 1 表示 i 的二进制 整体向右移动1 位,不涉及符号位 | 或运算 a | b 当a b 全是0时 结果是0 其他的都为1 & 与运算 a & b 当a b全 阅读全文
posted @ 2020-11-18 17:19 六小扛把子 阅读(112) 评论(0) 推荐(1) 编辑
摘要: 创建 Semaphore 实例的时候,需要一个参数 permits, 这个基本上可以确定是设置给 AQS 的 state 的, 然后每个线程调用 acquire 的时候,执行 state = state - 1, release 的时候执行 state = state + 1, 当然,acquire 阅读全文
posted @ 2020-11-13 15:50 六小扛把子 阅读(153) 评论(0) 推荐(0) 编辑
摘要: CyclicBarrier JUC包下 相当于可重复使用的CountDownLauth 之前聊过 CountDownLauth类似一种栅栏,条件每满足一次 state-1 ,state减到0时 打开栅栏释放所有阻塞住的线程 CountDownLautch相当于一次性的栅栏,释放过一次后便无用了。而C 阅读全文
posted @ 2020-11-07 16:58 六小扛把子 阅读(215) 评论(0) 推荐(0) 编辑
摘要: BigDecimal是 java.math包下提供的一种用于精确运算的类型 用于表示数字。进行数字间的判断。比较数字大小。 阿里巴巴开发手册原文 试验 输出结果 造成这种结果是因为精度问题! BigDecimal中 equals源码 bigDecimal0 和 bigDecimal1 传的都是整数, 阅读全文
posted @ 2020-11-06 15:52 六小扛把子 阅读(1968) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 作为JUC并发包下一重要工具 Latch的意思是栅栏,作为一个阀门用来控制多个线程的 常用方法: new CountDownLatch(参数为放开栅栏的条件); countDown(); 条件-1 await(); 条件未达到0则阻塞住,达到0则放开栅栏 两个简单的应用 阅读全文
posted @ 2020-11-06 14:50 六小扛把子 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 同步机制 Synchronization 画了一个简易的Java内存模型 在JVM中,主内存是公共区域,每个线程有自己独立的工作内存,所以就会有可见性的问题(两个线程同时从主内存拿到变量n到自己的工作内存,一个线程对其更改完放回主内存,是否会通知到另一个线程) synchronized 关键字 是同 阅读全文
posted @ 2020-10-26 16:05 六小扛把子 阅读(576) 评论(0) 推荐(0) 编辑
摘要: java线程的中断,不同于操作系统层面的中断,不是立刻将线程的行动中止,而是设置一种标识位,然后被其他调用方判断并进行处理 线程中断相关操作,在Thread类中操作 线程的中断位默认为false interrupt(); //设置一个线程的中断位为true static interrupted(); 阅读全文
posted @ 2020-10-23 15:29 六小扛把子 阅读(136) 评论(0) 推荐(0) 编辑
摘要: Condition 如图,java.util.concurrent.locks包下,与AQS同级 主要方法就是 await() :使当前持有锁的线程进入等待 (实际上是加入到Condition维护的一个等待队列,然后挂起) signal() : 唤醒等待队列头节点的线程 并加入到阻塞队列去排队抢锁 阅读全文
posted @ 2020-10-22 18:39 六小扛把子 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 先画个大致的假类图 主要的类都在这里,核心就是ReentrantLock的内部类 Sync, FairSync NonfairSync 是Sync的公平锁 非公平锁的实现 Sync继承于AbstractQueueSynchronizer(AQS) 核心功能也都在这 先来分析AQS AQS的核心思想就 阅读全文
posted @ 2020-10-16 18:18 六小扛把子 阅读(203) 评论(0) 推荐(0) 编辑