Java 公平锁与非公平锁

本文介绍了Java中的公平锁和非公平锁的概念。公平锁遵循先来先得原则,而非公平锁则允许线程随机获取锁,可能导致等待的线程无法及时获取。ReentrantLock默认采用非公平锁策略。文章还详细讲解了相关锁的API,如getHoldCount(), getQueueLength(), tryLock()等,帮助理解锁的工作机制。" 102942805,9144055,C语言基础知识详解,"['C语言', '编程基础', '输入输出', '运算符']
摘要由CSDN通过智能技术生成

公平锁与非公平锁:
锁Lock分为公平锁和非公平锁。
公平锁:表示线程获取锁的顺序是按照加锁的顺序来分配的,及先来先得,先进先出的顺序。
非公平锁:表示获取锁的抢占机制,是随机获取锁的,和公平锁不一样的就是先来的不一定能拿到锁,
有可能一直拿不到锁,所以结果不公平。
公平锁实例

public class Service {

	private ReentrantLock lock;
	
	public Service(boolean isFair) {
		super();
		lock = new ReentrantLock(isFair);
	}
	
	public void serviceMethod() {
		try {
			lock.lock();
			System.out.println("ThreadName=" + Thread.currentThread().getName()
					+ "获取锁定");
		} finally {
			lock.unlock();
		}
	}
	public static void main(String[] args) {
		final Service service = new Service(true);
		Runnable runnable = new Runnable() {
			
			@Override
			public void run() {
				System.out.println("★线程" + Thread.currentThread().getName()
						+ "运行了");
				service.serviceMe
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值