做网站属于程序员吗,优化百度百科,上饶做网站的,销客巴巴wordpress1 乐观锁 vs 悲观锁
锁的实现者预测当前锁冲突的概率#xff0c;可分为乐观锁和悲观锁。
乐观锁#xff1a;发生冲突的概率较小#xff1b;主要使用在读操作较多的情况下。
悲观锁#xff1a;发生冲突的概率较大#xff1b;主要使用在写操作较多的情况下。
2 轻量级锁…1 乐观锁 vs 悲观锁
锁的实现者预测当前锁冲突的概率可分为乐观锁和悲观锁。
乐观锁发生冲突的概率较小主要使用在读操作较多的情况下。
悲观锁发生冲突的概率较大主要使用在写操作较多的情况下。
2 轻量级锁 vs 重量级锁
轻量级锁加锁解锁速度更快更高效
重量级锁加锁解锁速度更慢更低效。
一般情况下乐观锁可能是轻量级锁悲观锁可能是重量级锁。
3 自旋锁 vs 挂起等待锁
自旋锁是轻量级锁的一种典型实现。
一旦锁被释放即可得到锁。
通常是纯用户态不需要经过内核态时间相对较短
挂起等待锁是重量级锁的一种典型实现。
通过内核的状态实现挂起等待时间相对较长 4 互斥锁 vs 读写锁
互斥锁只是单纯的加锁没有细分
读写锁分为读锁和写锁。
读写锁分为
1读锁和读锁之间不会产生锁竞争
2读锁和写锁之间会产生锁竞争
3写锁和写锁之间会产生锁竞争。
5 可重入锁 vs 不可重入锁
一个线程针对一把锁连续加锁两次出现死锁就是不可重入锁不发生死锁就是可重入锁。
产生死锁的必要条件
1互斥使用一个线程拿到锁后另外一个线程不可再使用。
2 不可抢占一个线程拿到锁后只能自己释放其他线程不能抢占。
3 请求和保持。
4 循环等待。
6 公平锁 vs 非公平锁
约定遵循 先来后到 的锁称为公平锁不遵循 先来后到 的锁称为非公平锁。
系统对于线程的调度是随机的自带的synchronized锁是非公平的。如果想成为公平锁则需要在synchronized基础上利用队列来记录加锁线程的顺序。 注
synchronized的特点
1 synchronized既是乐观锁又是悲观锁
2 既是轻量级锁又是重量级锁
3 轻量级锁基于自旋锁实现而重量级锁基于挂起等待锁实现
4 synchronized不是读写锁
5 synchronized是可重入锁
6 synchronized是非公平锁。