
并发编程
五二言
希望在交流中学习,在学习中接近自己的目标
展开
-
Synchronized底层语义以及基本原理
Java对象头与Monitorsynchronized的锁对象存储在Java对象头里。在jvm的对象头里,主要是由Mark Word以及Class Metadata Address组成。Class Metadata Address是类型指针指向对象的类元数据。JVM通过这个指针确定该对象在哪个类的实例。Mark Word存储对象的HashCode、分代年龄、锁标记位等信息。随着对象锁的不同,...原创 2019-01-21 21:48:30 · 382 阅读 · 0 评论 -
synchronized的应用方式
synchronized的三种应用方式(1)修饰实例方法(2)修饰静态方法(3)修饰代码块修饰实例方法/**** 代码1-1*/public class SynDemo implements Runnable{ static int i=0; public synchronized void increase(){ ...原创 2019-01-15 23:51:08 · 448 阅读 · 0 评论 -
乐观锁+版本号解决锁竞争问题
在高并发的场景下,经常会遇到这种情况:A请求过来,查询出来一条数据,进行update操作,与此同时B请求也在这个时候过来,对这条数据进行查询,并进行操作。此时就会出现B在A之后进行查询操作,但是实际B的数据却被A覆盖。这种情况并不少见,有时候会为了避免这种情况,我们会引入锁来解决这种问题,常见的比如使用ReetrantLock或者synchronized同步块等悲观锁的方式来实现,其实在这里,...原创 2018-12-24 21:55:15 · 6379 阅读 · 12 评论 -
Java"锁",你好
前言Java中的锁种类丰富,一方面在某些场景使用对的锁,会有非常高的效率。但是另一方面,由于锁的复杂性,也给开发人员带来了使用上的困难。因此,希望能通过一篇文章总结下锁的知识点。目录悲观锁和乐观锁自旋锁、适应性自旋锁无锁、偏向锁、轻量级锁和重量级锁公平锁和非公平锁可重入锁和非重入锁共享锁和排它锁悲观锁和乐观锁悲观锁和乐观锁的概念比较容易理解。举个例子来帮助理解下:程序猿...原创 2018-12-06 22:11:34 · 190 阅读 · 0 评论 -
【事务系列3】锁,你的兄弟姐妹还能再多点吗?
在很长的一段时间里,我对数据库中锁的概念都处于一种蒙圈的状态。 锁是什么?锁的出现是为了解决什么问题?锁的类型究竟有哪些?为什么有悲观锁、乐观锁,又有行级锁、表级锁等等的称呼? 在数据库中,锁就像拦路虎,但可惜我不是武松,就算是喝了三杯,依然被这头猛虎摁趴在路上。1.锁是什么? 锁是计算机协调多线程或者进程在并发请求同一资源的一种策略。在《事务的隔离级别以及低隔离级别下的数据异常情况》也写过,原创 2016-03-12 15:56:47 · 747 阅读 · 0 评论