可重入锁、不可重入锁、公平锁、读写锁

博客介绍了几种锁的概念,包括可重入锁(基于线程粒度,同一线程再次使用可直接操作)、不可重入锁(每次使用需重新获取锁)、可中断锁(等待锁时可中断)、公平锁(按等待时间先后获取)和读写锁(读写分离处理),还提及了可重入锁实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可重入锁:指的是在同一个线程中,获取锁之后再次使用同样的方法或对象中的其他方法可以直接操作,而不需要重新获取锁,它基于线程的粒度,per-thread
不可重入锁:指的是每次使用锁方法时,都需要获取新的锁,即使在同一个线程中调用同一个方法都需要等待上一个锁的释放,它是基于method粒度,per-invocation
可中断锁:在等待获取锁过程中可中断,注意是在等待锁过程中才可以中断,如果已经获取了锁,中断就无效。
公平锁:按等待获取锁的线程的等待时间进行获取,等待时间长的具有优先获取锁权利,即按先后顺序来持有锁。
读写锁:对资源读取和写入的时候拆分为两部分处理,读的时候可以多线程一起读,写的时候必须同步写,如:ReentrantReadWriteLock
可重入锁实现:

package com.xql.thread.lock;

public class ReentrantTest implements Runnable {
    public synchronized void get() {
        System.out.println(Thread.currentThread().getName());
        set();
    }

    public synchronized void set() {
        System.out.println(Thread.currentThread().getName());
    }

    @Override
    public void run() {
      get();
    }
}
package com.xql.thread.lock;

public class LockTest {
    public static void main(String[] args) {
        ReentrantTest rt = new ReentrantTest();
        for (;;){
            new Thread(rt).start();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值