首先需要知道几个名词:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量
原创
2022-05-11 13:01:06
210阅读
引子各位少侠大家好!今天我们来聊聊Java并发下的乐观锁。在聊乐观锁之前,先给大家复习一个概念:原子操作:什么是原子操作呢?我们知道,原子(atom)指化学反应不可再分的基本微粒。在Java多线程编程中,所谓原子操作,就是即使命令涉及多个操作,这些操作依次执行,不会被别的线程插队打断。原子操作聊完原子操作了,我们进入正题。大家都知道,一般而言,由于多线程并发会导致安全问题,针对变量的读和写操作,都
原创
2021-01-26 12:48:42
199阅读
引子各位少侠大家好!今天我们来聊聊 Java 并发下的乐观锁。在聊乐观锁之前,先给大家复习一个概念:原子操作:什么是原子操作呢?我们知道,原子(atom)指化学反应不可再分的基本微粒。在 Java 多线程编程中,所谓原子操作,就是即使命令涉及多个操作,这些操作依次执行,不会被别的线程插队打断。原子操作聊完原子操作了,我们进入正题。大家都知道,一般而言,由于多线程并发会导致安全问题,针对变量的读和写
原创
2021-02-06 20:50:46
194阅读
引子
各位少侠大家好!今天我们来聊聊 Java 并发下的乐观锁。
在聊乐观锁之前,先给大家复习一个概念:原子操作:
什么是原子操作呢?
我们知道,原子(atom)指化学反应不可再分的基本微粒。在 Java 多线程编程中,所谓原子操作,就是即使命令涉及多个操作,这些操作依次执行,不会被别的线程插队打断。
原子操作
聊完原子操作了,我们进入正题。
大家都知道,一般而言,由于多线程并发会导致安全问题,针
转载
2021-07-16 11:04:00
280阅读
引子各位少侠大家好!今天我们来聊聊 Java 并发下的乐观锁。在聊乐观锁之前,先给大家复习一个概念:原子操作:什么是原子操作呢?
转载
2022-04-20 16:33:19
112阅读
引子各位少侠大家好!今天我们来聊聊 Java 并发下的乐观锁。在聊乐观锁之前,先给大家复习一个概念:原子操作:什么是原子操作呢?我们知道,原子(atom)指化学反应不可再分的基本微粒。在 Java 多线程编程中,所谓原子操作,就是即使命令涉及多个操作,这些操作依次执行,不会被别的线程插队打断。聊完原子操作了,我们进入正题。大家都知道,一般而言,由于多线程并发会导致安全问题,针对变量的读和写操作,
转载
2021-06-06 22:08:26
88阅读
2评论
引子各位少侠大家好!今天我们来聊聊 Java 并发下的乐观锁。在
原创
2022-07-13 19:38:55
501阅读
每个时代,都不会亏待会学习的人大家好,我是yes。本来打算继续写消息队列的东西的,但是最近在带新同事,发现新同事对于锁这方面有一些误解,所以今天就来谈谈“锁”事和 Java 中的并发安全容器使用有哪些注意点。不过在这之前还是得先来盘一盘为什么需要锁这玩意,这得从并发 BUG 的源头说起。并发 BUG 的源头这个问题我 19 年的时候写过一篇文章, 现在回头看那篇文章真的是羞涩啊。让我们来看下这个源
原创
2020-10-25 21:26:50
154阅读
并发 BUG 的源头
我们知道电脑有CPU、内存、硬盘,硬盘的读取速度最慢,其次是内存的读取,内存的读取相对于 CPU 的运行又太慢了,因此又搞了个CPU缓存,L1、L2、L3。
正是这个CPU缓存再加上现在多核CPU的情况产生了并发BUG。
这就一个很简单的代码,如果此时有线程 A 和线程 B 分别在 CPU - A 和 CPU - B 中执行这个方法,它们的操作是先将 a 从主存取到 CPU
转载
2021-07-16 15:37:11
59阅读
大家好,我是yes。
本来打算继续写消息队列的东西的,但是最近在带新同事,发现新同事对于锁这方面有一些误解,所以今天就来谈谈“锁”事和 Java 中的并发安全容器使用有哪些注意点。
不过在这之前还是得先来盘一盘为什么需要锁这玩意,这得从并发 BUG 的源头说起。
并发 BUG 的源头
这个问题我 19 年的时候写过一篇文章, 现在回头看那篇文章真的是羞涩啊。
让我们来看下这个源头是什么,我们知道
原创
2020-10-26 14:42:00
41阅读
经得起诱惑,赖得住寂寞。
——献给低调的自己
(语法很枯燥,但是必须得弄懂)
接口为我们提供了一种用来组织和控制系统中的对象的机制。因此interface不仅仅单纯只是一个极度抽象的类,更可以通过创建一个能够被向上转型为多种基类型的类,来实现多重继承。
1.接口更纯粹,只提供形
原创
2012-11-01 15:31:34
477阅读
Java锁的分类Java中的分很多种类,按照场景的不同、特性的不同等分为了很多类,下面就来讲讲Java中锁的概念:自旋锁:是指当一个线程在获取锁的时候,该锁已经被其他线程占用,则该线程会循环等待,并不断判断是否到成功获取锁,直到获取到锁才会退出循环。乐观锁 :假定没有冲突,获取资源的时候不加锁,其他线程来访问的时候,会根据不同方法的实现报错或重试。悲观锁: 假定会发生冲突,同步所有对数据的相关操作
转载
2023-08-31 19:17:14
43阅读
之前用过很多次TreadLocal,但是对其的理解并不是很深刻,通过查阅资料和阅读数据对它进一步的了解,谈一谈我对TreadLocal的理解,探讨一下使用方法和实现原理一.对ThreadLocal的理解ThreadLocal叫做本地变量,也可以叫做线程本地存储
原创
2021-07-09 17:02:44
148阅读
前言大家对 乐观锁 这三个字眼应该不陌生吧?为什么今天我想谈谈乐观锁的设计呢?关于数据库的乐观锁使用, 是不是发的操作对数据 不会产生冲突,所以没有使用 真正的 ‘锁...
原创
2022-11-07 18:05:20
404阅读
Future 表示了一个任务的生命周期,是一个可取消的异步运算,可以把它看作是一个异步操作的结果的占位符,它将在未来的某个时刻完成,并提供对其结果的访问。在并发包中许多异步任务类都继承自Future,其中最典型的就是 FutureTask。
原创
精选
2022-04-27 20:27:55
236阅读
从JDK 5开始,把工作单元与执行机制分离开来,工作单元包括Runnable和Callable,而执行机制由Executor框架提供。
原创
精选
2022-04-27 20:34:57
294阅读
ReentrantLock实现了Lock接口,Lock接口中定义了lock与unlock相关操作,并且还存在newCondition方法,表示生成一个条件。
原创
2022-04-26 20:54:52
174阅读
ReentrantReadWriteLock表示可重入读写锁,ReentrantReadWriteLock中包含了两种锁,读锁ReadLock和写锁WriteLock,可以通过这两种锁实现线程间的同步。
原创
2022-04-26 21:03:39
160阅读