多线程并发
_夜半钟声到客船
永远保持对技术的热情
展开
-
MySQL 多线程并发更新同一行,通过主键id更新,死锁问题以及解决
最近项目中用到Job+多线程并发执行更新同一行数据,通过主键id更新的场景,但是任务一执行就出现dead lock异常,经过分析和排查,发现多线程并发读取同一行数据获取共享锁(Shard Lo)原创 2021-06-01 10:58:50 · 6437 阅读 · 0 评论 -
Redis为什么快?Redis 6新版本的多线程是什么?
Redis是一款基于内存中的Key-Value对数据结构存储,用作数据库,缓存和消息代理。官网地址:https://redis.io/中文翻译:http://www.redis.cn/Redis作者的blog:http://antirez.com/下面来看下Redis为什么快?1、基于内存实现Redis是基于内存进行数据存储和读取的【除RDB和AOF是保证数据可靠的持久化技术】,跟传统的磁盘文件数据存储相比,避免了通过磁盘IO读取到内存这部分的开销,这也是Redis快的主要原因。原创 2020-11-13 11:17:05 · 548 阅读 · 0 评论 -
AQS源码研究
AQS:Abstract Queue Synchronize;抽象队列同步器。JDK里juc的Lock相关的api里有采用。核心:状态值state 和 等待队列。通过CAS(compare and swap)维护一个状态值state=0;当线程获取到锁时修改state 加1;可重入时state会一直加1;另外就是一个等待队列,存放其他来获取锁但是没有成功的线程。当拥有锁的线程执行完后,state置为0时,会唤醒等待队列的头结点来获取锁;如果是非公平锁,唤醒头结点线程的同时是允许其他新加入的线程原创 2020-06-05 16:15:06 · 232 阅读 · 0 评论 -
深入研究Java的synchronized以及四种锁状态的升级
在 Java 语言中,使用 Synchronized 是能够实现线程同步的,即加锁。并且实现的是悲观锁,在操作同步资源的时候直接先尝试加锁。加锁可以使一段代码(类实例,方法,代码块)在同一时间只有一个线程可以访问,在增加安全性的同时,牺牲掉的是程序的执行性能,所以为了在一定程度上减少获得锁和释放锁带来的性能消耗,在 jdk6 之后便引入了“偏向锁”和“轻量级锁”,所以总共有4种锁状态,级别由低到高依次为:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态。这几个状态会随着竞争情况逐渐升级。注意:锁可以原创 2020-06-04 10:03:55 · 391 阅读 · 0 评论 -
java使用三个线程,按顺序线程1输出1、线程2输出2、线程3输出3
import java.util.concurrent.locks.ReentrantLock;/** * 标题、简要说明. * 类详细说明. * * Copyright: Copyright (c) 2014年11月6日 上午9:50:41 * * Company: 苏州米谷网络科技有限公司 * * * @author fuzhengliang@migu99.co原创 2014-11-06 10:10:27 · 3489 阅读 · 0 评论