![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
锁
皮皮虾骑着皮皮狗
这个作者很懒,什么都没留下…
展开
-
互斥锁和自旋锁比较
1、互斥锁和自旋锁:各种锁的基锁2、互斥锁(独占锁)加锁失败后,线程会释放 CPU ,给其他线程;自旋锁加锁失败后,线程会忙等待(可以使用while实现,最好使用CPU提供的PAUSE指令(可以减少循环等待时的耗电量)),直到它拿到锁;3、注意:互斥锁加锁失败时,会从用户态陷入到内核态,让内核帮我们切换线程,虽然简化了使用锁的难度,但是存在一定的性能开销成本。一、这个开销成本就是会有两次线程上下文切换的成本。1、当线程加锁失败时,内核会把线程的状态从「运行」状态设置为「睡眠」状态,然后把 CPU原创 2021-06-28 09:19:46 · 2735 阅读 · 0 评论 -
volatile关键字的作用
1、用于修饰变量,保证变量在线程之间实时可见2、使用volatile可以禁止JVM的指令重排,保证在多线程环境下也能正常运行原创 2021-06-28 09:19:15 · 203 阅读 · 0 评论 -
synchronized、ReentrantLock和volatile关键字的比较
Synchronized和ReentrantLock的区别?①两者都是可重入锁②Synchronized依赖于JVM,而ReentrantLock依赖于API。③ReentrantLock比Synchronized增加了一些高级功能。比如:等待可中断、可实现公平锁、可实现选择性通知。④性能已经不是选择标准了。Synchronized关键字和Volatile关键字的比较?1、volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是vola原创 2021-06-28 09:16:59 · 166 阅读 · 0 评论