Java中的锁都有哪些分类?什么是公平锁?什么是非公平锁?锁的可重入性是什么?
Java锁机制详解:五种分类与概念解析
最新推荐文章于 2025-04-25 14:15:11 发布
原创
最新推荐文章于 2025-04-25 14:15:11 发布
·
177 阅读
·
0
·
0
·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
文章标签:
#java
#开发语言
Java中的锁主要分为五类:悲观锁与乐观锁、公平锁与非公平锁、自旋锁与重入锁、重量级锁与轻量级锁以及独占锁与共享锁。公平锁保证线程按顺序获取锁,而非公平锁则允许线程争抢。非公平锁在效率上通常优于公平锁,如Synchronized即为非公平锁。锁的可重入性意味着一个线程可以进入已获得锁的方法或代码块。此外,文章还提及了CPU调度的抢占式和非抢占式两种模式。
Java中锁常见的五中分类:
1 悲观锁/乐观锁
2 公平锁/非公平锁
3 自旋锁/重入锁
4 重量级锁/轻量级锁
5 独占锁/共享锁
公平锁:其实就是指的请求锁的线程是有序的,并且是顺序排列的,先来的先获取锁,后来的后获取锁,使用队列来存放。
非公平锁:就是指请求锁的线程是无序的,通过争抢的方式来获取锁,有可能出现有一个线程一直获取到锁的情况。
非公平锁要比公平锁效率高,Synchronized是非公平锁。
这里提到一个知识点,在操作系统中CPU的调度算法有一种分类方式:抢占式和非抢占式。
锁的可重入性:在同一个线程中锁是可以在方法间进行传递的,可以直接获取锁。