ReentrantLock
2016-03-18 17:08:15 1 举报
登录查看完整内容
ReentrantLock是Java并发编程中的一个类,它实现了Lock接口。与synchronized关键字不同,ReentrantLock提供了更高的灵活性和可扩展性。使用ReentrantLock,开发者可以更精确地控制锁的获取和释放,以及实现公平锁和非公平锁等高级功能。ReentrantLock的主要方法包括lock()、unlock()、tryLock()和lockInterruptibly()等。通过使用ReentrantLock,程序员可以在多线程环境下确保数据的完整性和一致性,提高程序的性能和响应速度。
作者其他创作
大纲/内容
将当前线程放置在Node链尾巴
成功
执行
尝试获取锁
是
不是
没有
检查前Node是否是头
lock()
检查是否可以获得权限
ReentrantLock
是不是当前锁线程
尝试进入等待池
acquireQueued()
是否锁过(CAS算法)
线程阻塞等待唤醒
tryLock()
LocakSupport.park()
设置锁进程为当前线程
失败
取出前面所有取消的Node,知道前面是有效的Node
获取锁资格
addWaiter()
否
设置锁记录为1
unLock()
锁线程数+1,返回成功
0 条评论
回复 删除
下一页