一、锁 1、锁的定义 锁即是一种用来协调多线程或进程并发使用同一共享资源的机制 2、锁的分类 从性能上分类:乐观锁和悲观锁 从数据库操作类型上分类:读锁和写锁 从操作粒度上分类:表锁和行锁 2.1 从性能上分类 2.1.1 乐观锁 乐观锁顾名思义就是操作的时候很乐观,认为操作不会产生并发问题(不会有 ...
分类:
数据库 时间:
2020-01-03 19:48:11
阅读次数:
158
ReentrantReadWriteLock分别实现读锁和写锁,在大多数并发场景下读多于写,是比ReentrantLock 排他锁的并发性能好,吞吐量高,合理运用,可以使我们程序运行更有效率! ...
分类:
编程语言 时间:
2019-12-30 23:33:43
阅读次数:
161
读写锁简介 对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写操作了。 读写锁ReentrantReadWriteLock,它表示两 ...
分类:
其他好文 时间:
2019-12-30 17:15:09
阅读次数:
66
1. 同步概念 2. 线程同步 3. 进程同步4. 生产者消费者模型5. 哲学家问题 ...
分类:
编程语言 时间:
2019-12-29 23:45:04
阅读次数:
116
概述 在开发过程中,会有很多地方用到锁,比如多线程修改一个对象时,为了防止多个线程同时修改,会采用加锁的机制,还有数据库在多个线程修改同一条记录时,也会有读锁,写锁等,所有这些都为了解决一个问题,在并发情况修改同一个值的时候,如何可以保证这个值不出问题。举个简单的例子说明:比如淘宝上某款商品库存只剩 ...
分类:
编程语言 时间:
2019-12-28 12:54:52
阅读次数:
84
StampedLock 是从 JDK1.8 开始提供,它的性能比 ReadWriteLock 好 StampedLock 支持:乐观读锁、悲观读锁、写锁 StampedLock 的悲观读锁、写锁,与 ReadWriteLock 的读锁、写锁用法相似:读读可并行、读写互斥、写写互斥。 StampedL ...
分类:
其他好文 时间:
2019-12-24 09:58:10
阅读次数:
65
/** * StampedLock和ReadWriteLock相比,改进之处在于:读的过程中也允许获取写锁后写入!这样一来,我们读的数据就可能不一致,所以,需要一点额外的代码来判断读的过程中是否有写入,这种读锁是一种乐观锁。* 乐观锁的意思就是乐观地估计读的过程中大概率不会有写入,因此被称为乐观锁。 ...
分类:
其他好文 时间:
2019-12-20 15:22:33
阅读次数:
65
前言 前两篇我们讲述了ReentrantLock的加锁释放锁过程,相对而言比较简单,本篇进入深水区,看看ReentrantReadWriteLock-读写锁的加锁过程是如何实现的,继续拜读老Lea凌厉的代码风。 一、读写锁的类图 读锁就是共享锁,而写锁是独占锁。读锁与写锁之间的互斥关系为:读读可同时 ...
分类:
其他好文 时间:
2019-12-19 23:12:58
阅读次数:
70
网络中进程之间如何通信 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是 ...
分类:
编程语言 时间:
2019-12-07 14:19:00
阅读次数:
77
Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景 一、相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象 ...
分类:
数据库 时间:
2019-12-04 18:32:37
阅读次数:
112