
JUC
文章平均质量分 90
以源码的角度展开对JUC的认识
snail-jie
问题驱动,慢慢沉淀
展开
-
Synchronized锁优化进阶学习
概述 本篇文章根据《深入理解Java虚拟机(第三版)》的Synchronized理论描述进行测试验证,深入了解其运行机制Synchronized不可中断synchronized关键字经过Javac编译之后,会在同步块的前后分别形成 monitorenter和monitorexit这两个字节码指令1.1 将下方代码编译public class Juc_LockOnThis { public void decrStock(){ //synchronize原创 2022-01-07 15:07:58 · 349 阅读 · 0 评论 -
线程池任务问题的深入思考
问题描述每次执行一组任务,一组任务最多有 15 个,多线程执行,每个线程处理一个任务;每次执行完一组任务后,再执行下一组,不存在上一组的任务和下一组一起执行的情况代码重现定义线程池重现代码 @Test public void contextLoads() throws Exception { // 一共 10 批任务 for(int i = 0; i < 10; i++) { // 每次执行一批任务原创 2021-04-11 10:36:48 · 808 阅读 · 0 评论 -
ReentrantLock之Condition源码解析
总结性概述signalAll:将节点从条件队列中移除,并尾部插入同步队列中1.1 unlock时从同步队列中的头部开始解锁await: 尾部插入条件队列;释放锁;阻塞;2.1 await解除阻塞后(unlock或者中断)(1)获取锁(2)响应中断1. 在等待时中断,则抛出中断异常2. 在已经解除阻塞后中断,则自己中断自己源码分析测试代码介绍启动3个线程,分别执行存放、取出、中断操作线程22.1 首先执行线程2,此时集合breads为空,则执行notEmpty.awai原创 2021-03-27 16:05:08 · 377 阅读 · 0 评论 -
ReentrantLock lock和unlock源码分析
ReentrantLock$NonfairSync#lock方法详解源码调式demo介绍![在这里插入图片描述](https://img-blog.csdnimg.cn/20210320123702889.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDgwMzAxMQ==,size_16,color_FFFFFF,t_7原创 2021-03-20 14:13:43 · 318 阅读 · 4 评论