当前位置:网站首页>synchronized 和 ReentrantLock
synchronized 和 ReentrantLock
2022-07-06 00:33:00 【InfoQ】
synchronized 和 ReentrantLock 有什么区别?
- synchronized 和 ReentrantLock 都提供了锁的功能
- ReentrantLock 可设置为公平锁,而 synchronized 不能
- ReentrantLock 只能修饰代码块,而 synchronized 可以用于修饰方法、修饰代码块等;
- ReentrantLock 需要手动加锁和释放锁,锁没有释放,则会造成资源被占用一直得不到释放,而 synchronized 无需手动释放锁,由jvm内部自动加锁和释放锁
- ReentrantLock 可以主动的获取是否成功获得了锁的信息,而 synchronized 不行,可以理解为黑盒方法
使用
Lock lock = new ReentrantLock();
try {
lock.lock();
} finally {
lock.unlock();
}
- 直接修饰在方法声明上
- 声明在方法块中
原理的区别
- 每个对象有一个锁monitor,当monitor被占用时就会处于锁定状态
- 如果monitor的进入数为0,则该线程进入monitor,然后将进入数设置为1,该线程即为monitor的所有者
- 如果monitor的进入数不为0,则表示已有线程进入monitor,则该线程进入阻塞状态
- 线程执行完成后,退出monitor,将进入数设置为0
- CAS:Compare and Swap,比较并交换,此操作为一个原子操作
- CLH队列:带头结点的双向非循环链表
边栏推荐
- Problems and solutions of converting date into specified string in date class
- Priority queue (heap)
- FFMPEG关键结构体——AVCodecContext
- Location based mobile terminal network video exploration app system documents + foreign language translation and original text + guidance records (8 weeks) + PPT + review + project source code
- Global and Chinese markets for hinged watertight doors 2022-2028: Research Report on technology, participants, trends, market size and share
- Choose to pay tribute to the spirit behind continuous struggle -- Dialogue will values [Issue 4]
- MySQL之函数
- FFMPEG关键结构体——AVFormatContext
- Room cannot create an SQLite connection to verify the queries
- Pointer - character pointer
猜你喜欢
The relationship between FPGA internal hardware structure and code
Problems and solutions of converting date into specified string in date class
Go learning --- structure to map[string]interface{}
Notepad++ regular expression replacement string
How to solve the problems caused by the import process of ecology9.0
从底层结构开始学习FPGA----FIFO IP核及其关键参数介绍
NSSA area where OSPF is configured for Huawei equipment
FPGA内部硬件结构与代码的关系
如何制作自己的机器人
小程序技术优势与产业互联网相结合的分析
随机推荐
Leetcode Fibonacci sequence
Spark DF增加一列
【文件IO的简单实现】
[Chongqing Guangdong education] reference materials for Zhengzhou Vocational College of finance, taxation and finance to play around the E-era
FFT learning notes (I think it is detailed)
Data analysis thinking analysis methods and business knowledge - analysis methods (III)
MySql——CRUD
Key structure of ffmpeg -- AVCodecContext
Classic CTF topic about FTP protocol
Codeforces Round #804 (Div. 2)【比赛记录】
Problems and solutions of converting date into specified string in date class
Set data real-time update during MDK debug
FFMPEG关键结构体——AVFormatContext
[QT] QT uses qjson to generate JSON files and save them
MySQL functions
MySQL存储引擎
OS i/o devices and device controllers
STM32 key chattering elimination - entry state machine thinking
STM32 configuration after chip replacement and possible errors
Gavin teacher's perception of transformer live class - rasa project actual combat e-commerce retail customer service intelligent business dialogue robot system behavior analysis and project summary (4