互联网并发编程中,锁的概念时时刻刻都在我们身边,无论是并发编程时候线程锁,还是数据库网络中的锁,都有一些相似之处,都是为了保持数据库的完整性和一致性。不恰当的使用锁,会导致性能下降,出现死锁等情况,所以弄清楚锁的原理概念是必要的。 一、锁分类 二、悲观锁(Pessimistic Lock) 顾名思义 ...
分类:
数据库 时间:
2020-03-07 12:51:05
阅读次数:
94
# MyIsam 和 innodb 均可以加表锁 ## 加读锁 LOCK TABLES `table_name` READ; * 阻塞其他进程(会话)的写操作,不阻塞其他进程的读操作 ## 加写锁 LOCK TABLES `table_name` WRITE; * 阻塞其他进程(会话)的写操作和读操 ...
分类:
数据库 时间:
2020-03-06 23:33:57
阅读次数:
122
转自 https://www.cnblogs.com/hustzzl/p/9343797.html 1. Java锁的种类 在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多,在此做一个总结。介绍的内容如下: 乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/ ...
分类:
编程语言 时间:
2020-03-06 12:52:14
阅读次数:
76
介绍 golang 中的 sync 包实现了两种锁: Mutex:互斥锁 RWMutex:读写锁,RWMutex 基于 Mutex 实现 Mutex(互斥锁) Mutex 为互斥锁,Lock() 加锁,Unlock() 解锁 在一个 goroutine 获得 Mutex 后,其他 goroutine ...
分类:
其他好文 时间:
2020-03-02 17:34:58
阅读次数:
67
我们在67节和68节实现了线程的一些基本协作机制,那是利用基本的wait/notify实现的,我们提到,Java并发包中有一些专门的同步工具类,本节,我们就来探讨它们。 我们要探讨的工具类包括: 读写锁ReentrantReadWriteLock 信号量Semaphore 倒计时门栓CountDow ...
分类:
编程语言 时间:
2020-02-28 01:39:36
阅读次数:
78
一、读写锁读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。读操作可以共享,写操作是排他的,可以有多个在读(与 CPU 数相关),只能有唯一个在写,但不能同时既有读者又有写者。如果读写锁当前没有读者,也没有写者,那么写者... ...
分类:
其他好文 时间:
2020-02-26 14:11:21
阅读次数:
64
你可能有这样一个疑问,Java SDK 并发包里为什么还有很多其他的工具类呢?原因很简单:分场景优化性能,提升易用性。 接下来我们聊聊,针对读多写少这种并发场景,Java SDK 并发包提供了读写锁——ReadWriteLock 读写锁,并不是 Java 语言特有的,而是一个广为使用的通用技术,所有 ...
分类:
其他好文 时间:
2020-02-24 09:24:56
阅读次数:
87
并发控制 MySQL在两个层面实现并发控制:服务器层与存储引擎层。 读锁和写锁: 在处理并发读或写时,可以通过实现一个由两种锁组成的系统来解决问题。 这两种锁通常被称为共享锁和排他锁,或者称为读锁和写锁。 读锁:是共享的,或者说是相互不阻塞的,多个客户可以在同时读取同一数据。 写锁:是排他的,一个写 ...
分类:
数据库 时间:
2020-02-24 00:34:45
阅读次数:
101
本博客系列是学习并发编程过程中的记录总结。由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅。 "并发编程系列博客传送门" 本文参考了 "[Java多线程进阶(六)—— J.U.C之locks框架:AQS综述(1)" ]和 "Java技术之AQS详解" 两篇文章。 AQS 简 ...
分类:
其他好文 时间:
2020-02-21 18:06:09
阅读次数:
83
前言 适用于读多写少的场景,允许多个线程同时读取共享变量。但在读多写少的场景中,还有更快的技术方案。在Java 1.8中, 提供了 锁,它的性能就比读写锁还要好。下面我们介绍StampedLock的使用方法、内部工作原理以及在使用过程中需要注意的事项。 StampedLock支持的三种锁模式 支持两 ...
分类:
编程语言 时间:
2020-02-19 20:43:28
阅读次数:
82