Java 并发编程之 ReentrantLock 源码分析 Java 编程技术

Java 并发编程之 ReentrantLock 源码分析

我是一个优秀的人,但也有缺点,比我优秀的人有很多很多。连自己都认输,何谈你的对手,与你一样优秀,甚至比你优秀的人。战胜自己,就是最大的超越。 在Java5.0之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile。我们知道synchronized关键字实现了内置锁,而volatile关键字保证了多线程的内存可见性。 在大多数情况下,这些机制都能很好地完成工作,但...
阅读全文
不能再被问住了!ReentrantLock 源码、画图一起看一看! Java 编程技术

不能再被问住了!ReentrantLock 源码、画图一起看一看!

前言 在阅读完 JUC 包下的 AQS 源码之后,其中有很多疑问,最大的疑问就是 state 究竟是什么含义?并且 AQS 主要定义了队列的出入,但是获取资源、释放资源都是交给子类实现的,那子类是怎么实现的呢?下面开始了解 ReentrantLock。 公众号:liuzhihangs,记录工作学习中的技术、开发及源码笔记;时不时分享一些生活中的见闻感悟。欢迎大佬来指导! 介绍...
阅读全文
聊聊常见未授权访问漏洞总结 Java 编程技术

聊聊常见未授权访问漏洞总结

本文转载自微信公众号「Bypass」,作者Bypass 。转载本文请联系Bypass公众号。 本文详细地介绍了常见未授权访问漏洞及其利用,具体漏洞列表如下: Jboss 未授权访问 Jenkins 未授权访问 ldap未授权访问 Redis未授权访问 elasticsearch未授权访问 MenCache未授权访问 Mongodb未授权访问 ...
阅读全文
mybatis sqlsession与sqlsquery、transaction、connection Java 编程技术

mybatis sqlsession与sqlsquery、transaction、connection

sqlsession和connection 一个sqlsession一般对应一个connection,并且mybatis默认每次获取session都会开启一个事务,且不自动提交事务。如果更新操作完成后不手动commit,则在连接断开时会将更新操作回滚,一个sqlSession(一个transaction)中可以多次commit,commit后cache和statement刷新(一般一个...
阅读全文
Spring事务源码分析专题(一)JdbcTemplate使用及源码分析 Spring

Spring事务源码分析专题(一)JdbcTemplate使用及源码分析

Spring中的数据访问,JdbcTemplate使用及源码分析 前言 本系列文章为事务专栏分析文章,整个事务分析专题将按下面这张图完成 image-20200718220712800 对源码分析前,我希望先介绍一下Spring中数据访问的相关内容,然后层层递进到事物的源码分析,主要分为两个部分 JdbcTemplate 使用及源码分析 Myb...
阅读全文
Spring事务源码分析专题(一)JdbcTemplate使用及源码分析 Java 编程技术

Spring事务源码分析专题(一)JdbcTemplate使用及源码分析

Spring中的数据访问,JdbcTemplate使用及源码分析 前言 本系列文章为事务专栏分析文章,整个事务分析专题将按下面这张图完成 对源码分析前,我希望先介绍一下Spring中数据访问的相关内容,然后层层递进到事物的源码分析,主要分为两个部分 JdbcTemplate 使用及源码分析 Mybatis 的基本使用及Spring对 Mybatis 的...
阅读全文
基础篇:详解锁原理,synchronized、volatile+cas底层实现 Java 编程技术

基础篇:详解锁原理,synchronized、volatile+cas底层实现

随着多进程多线程的出现,对共享资源(设备,数据等)的竞争往往会导致资源的使用表现为随机无序 例如:一个线程想在控制台输出"I am fine",刚写到"I am",就被另一线程抢占控制台输出"naughty",导致结果是"I am naughty";对于资源的被抢占使用,我们能怎么办呢?当然不是凉拌,...
阅读全文
深入浅出Semaphore源码解析 Java 编程技术

深入浅出Semaphore源码解析

Semaphore 通过permits的值来限制线程访问临界资源的总数,属于有限制次数的共享锁,不支持重入。 前提条件 在理解 Semaphore 时需要具备一些基本的知识: 理解AQS的实现原理 之前有写过一篇 《深入浅出AQS源码解析》 关于AQS的文章,对AQS原理不了解的同学可以先看一下 Semaphore源码解析 Semaphore 中有3个内部类,分别是...
阅读全文
ReenTrantLock源码浅析 Java 编程技术

ReenTrantLock源码浅析

ReenTrantLock是juc包下的一个经典的互斥锁,也是 可重入锁 (即当前线程在已经获取改锁后重复执行获取锁操作时不会引起死锁,并且不需要执行获取锁的操作),ReenTrantLock是基于AQS来实现的(PS:注意是基于不是继承,看到网上有的同学会说发现ReentrantLock并没有继承AQS有所疑问),如果有对AQS不了解的同学可以查看我之前的文章 浅析AQS(1)---独占锁以及共...
阅读全文
深入浅出ReentrantLock源码解析 Java 编程技术

深入浅出ReentrantLock源码解析

ReentrantLock 不但是可重入锁,而且还是公平或非公平锁,在工作中会经常使用到,将自己对这两种锁的理解记录下来,希望对大家有帮助。 前提条件 在理解 ReentrantLock 时需要具备一些基本的知识 理解AQS的实现原理 之前有写过一篇 《深入浅出AQS源码解析》 关于AQS的文章,对AQS原理不了解的同学可以先看一下 什么是可重入锁 当一个线程已经持有锁...
阅读全文
从ReentrantLock到AQS的原理及应用 Java 编程技术

从ReentrantLock到AQS的原理及应用

前言 Java并发包(JUC:java.util.concurrent)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,ReentrantLock、Semaphore,它们的实现都用到了一个共同的基类--AbstractQueuedSynchronizer,简称AQS。AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的Reent...
阅读全文
多项目应用开发架构和多进程间开发构建流程优化分析 编程技术 软件架构

多项目应用开发架构和多进程间开发构建流程优化分析

多项目应用开发架构和多进程间开发构建流程优化分析 随着业务复杂度的上升,前端项目不管是从代码量上,还是从依赖关系上都会爆炸式增长。对于单页面应用或者多应用项目来说,各个应用之间的关系也会更加复杂,多个应用之间如何配合,如何维护相互关系?公共库版本如何管理?如何兼顾开发体验和上线构建效率?这些话题随着前端业务的发展,逐渐浮出水面。 这篇文章我就以一个成熟的大型项目为例,从其中一个优化点延伸...
阅读全文
Loading...