显示锁的应用场景: 1.ReadWriteLock 读写分离:可以有效地减少锁竞争,以提升系统性能 2.中断锁,超时锁 Lock读写分离 读写分离简介: 1.读写锁:在同一时刻允许多个读线程访问,但是当写线程访问,所有的写线程和读线程均被阻塞。读写锁维护了一个读锁加一个写锁,通过读写锁分离的模式来保 ...
分类:
其他好文 时间:
2020-05-03 12:43:34
阅读次数:
70
面试官:了解锁吗? 小明:了解,还经常用过。 面试官:说说synchronized和lock的区别吧 小明:synchronized是可重入锁,由于lock是一个接口,重入性取决于实现,synchronized不支持中断,而lock可以。。。。。。。。。。。。。。。。 面试官:好了,那有没有比这两种 ...
分类:
其他好文 时间:
2020-04-27 17:46:57
阅读次数:
91
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每 次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传 统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写 锁等,都是在做操作之前先上锁。再比如 Java 里面的同步原语 synchroniz ...
分类:
其他好文 时间:
2020-04-25 00:42:12
阅读次数:
181
以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元数据锁,间隙锁,临界锁。 一 全局锁 Mysql的全局锁是对整个实例加锁,加锁之后,数据库整体处于只读状态,数据上不能执行增删改,元数据上不能执行新建表,更新表;不能提交事务。 命令: ...
分类:
数据库 时间:
2020-04-21 22:34:01
阅读次数:
90
1.先以一段代码为例 ReadWriteLock rwLock = new ReentrantReadWriteLock(); // rwLock.readLock()是获取rwLock里的一个属性而非new // 这句代码的意思是给rwLock加读锁,而不应该理解为给rwLock.readLock ...
分类:
其他好文 时间:
2020-04-21 16:51:23
阅读次数:
66
一、Lock接口 Lock接口提供了一些方法,比如lock(),tryLock()等方法,像ReentrantLock就是基于队列同步器来实现的 二、AbstractQueuedSynchronizer 1.什么是队列同步器 队列同步器是一个抽象类,提供了实现线程队列获取同步状态的一系列方法(简单理 ...
分类:
其他好文 时间:
2020-04-17 23:22:08
阅读次数:
87
1、map基本使用 map声明 var m4 map[int]int //只是声明 没有开辟空间m4[1]=100 //报错log.Println(m4) 创建 //1m3:=make(map[int]string,100) //可以指定长度log.Println(len(m3)) //0 键值对的 ...
分类:
编程语言 时间:
2020-04-15 22:59:36
阅读次数:
101
多线程 1.并行和并发有什么区别? 并行:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑 上来看那些任务是同时执行。 并发:多个处理器或多核处理器同时处理多个任务。 如下图: 并发和并行 并发 = 两个队列和一台咖啡机。 并行 = 两个队列和两台咖啡机。 2.线程和进程的区别 ...
分类:
编程语言 时间:
2020-04-12 14:00:29
阅读次数:
65
可重入读写锁 ReentrantReadWriteLock 其实基本上模拟了文件的读写锁操作。ReentrantReadWriteLock 和ReentrantLock 的差别还是蛮大的; 但是也有很多的相似之处; ReentrantReadWriteLock 的 writerLock 其实就是相当 ...
分类:
其他好文 时间:
2020-04-09 00:32:27
阅读次数:
70
一,Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock ...
分类:
其他好文 时间:
2020-03-30 12:41:32
阅读次数:
83