互斥锁 互斥锁的特性: 1. 原子性:当有一个线程成功拿到了这个锁,其他线程都无法在相同的时间拿到这个锁 2. 唯一性:在一个线程拿到锁的这段时间,只有当这个线程把锁释放掉,其他的线程才有可能拿到 3. 非繁忙等待性:如果一个线程已经锁定了一个互斥量,第二个线程又视图去拿到这个锁的前线,则第二个锁将 ...
分类:
其他好文 时间:
2019-10-15 21:21:06
阅读次数:
124
重入锁 重入锁,顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。重进入是指任意线程在获取到锁之后能够再次获取该锁而不会被锁阻塞,该特性的实现需要解决以下两个问题。 1、线程再次获取锁。锁需要去识别获取锁的线程是否为当前占据锁的线程,如果是,则再次成功获取。 2、锁的最终释放 ...
分类:
编程语言 时间:
2019-10-15 19:27:16
阅读次数:
89
一、内置锁sync 和 显示锁lock概念 1、synv锁又叫内置锁,不能中断,拿不到无限等待即阻塞; java自带关键字; 隐式可重入; 重入锁:锁对应对象要多次调用对应方法,如递归 2、 lock的lockinterruptiply意思是可中断的;语言层面的接口; 其实现类reentrantlo ...
分类:
其他好文 时间:
2019-10-15 00:06:36
阅读次数:
107
数据库中的共享锁与排他锁 共享锁,又称为读锁,获得共享锁之后,可以查看但无法修改和删除数据。 排他锁,又称为写锁、独占锁,获得排他锁之后,既能读数据,又能修改数据。 为什么要加锁 很多人都知道,锁是用来解决并发问题的,那么什么是并发问题呢?并发情况下,不加锁会有什么问题呢? 拿生活中的洗手间举例子, ...
分类:
其他好文 时间:
2019-10-11 23:42:01
阅读次数:
126
场景: 1.创建一个触发器,当往图书表中插入一条数据时,在图书表的日期字段中插入当天的日期(now())。 这里设置触发器: 触发器创建是成功的,但是当执行插入操作时,会报错: 这是因为在操作和更新是在同一个表中时,会有一个写锁,导致你update是无法执行成功的, 所以我们要使用set变量的方法去 ...
分类:
其他好文 时间:
2019-10-11 18:05:02
阅读次数:
127
1 HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在ge ...
分类:
其他好文 时间:
2019-10-11 00:29:09
阅读次数:
104
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做 ...
分类:
其他好文 时间:
2019-10-08 22:25:47
阅读次数:
104
Java基础 1、HashMap的源码,实现原理,JDK8中对HashMap做了怎样的优化。 2、HaspMap扩容是怎样扩容的,为什么都是2的N次幂的大小。 3、HashMap,HashTable,ConcurrentHashMap的区别。 4、极高并发下HashTable和ConcurrentH ...
分类:
其他好文 时间:
2019-10-08 14:04:41
阅读次数:
97
java中的锁 Java锁的类别 java中的锁按照不同的类别可以有如下的分类: 乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/非公平锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/非公平锁 分段锁 偏向锁/轻量级 ...
分类:
编程语言 时间:
2019-10-02 22:36:41
阅读次数:
105
一. 读写锁是怎么实现的? 继承AQS,然后通过将AQS中的state转化为二进制,分为高16位和低16位来区分。高16位表示读状态,低16位为写状态。 二. 解析表示方式(高低16位) 假设此时state是数值S a.写锁 在判断写锁时,通过 K=S&0X0000FFFF, 将高位全部抹掉,此时只 ...
分类:
其他好文 时间:
2019-09-30 21:41:49
阅读次数:
111