
本教程操作环境:windows7系统、java10版,DELL G3电脑。
1、概念
可重入的读写锁,读写锁内部维护了一个ReadLock和一个WriteLock,底层还是AQS,但是AQS只有一个state状态量,如何同时控制读和写呢,这里使用了state(int)的高16位表示读状态,低16为表示写,高16位的值代表获取读锁的线程数,低16位代表写锁的可重入数。
2、原理
利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似
3、实例
publicclassReentrantDemoimplementsRunnable{
Locklock=newReentrantLock();
@Override
publicvoidrun(){
set();
}
publicvoidset(){
try{
lock.lock();
System.out.println("set方法");
get();
}catch(Exceptione){
e.printStackTrace();
}finally{
lock.unlock();//必须在finally中释放
}
}
publicvoidget(){
try{
lock.lock();
System.out.println("get方法");
}catch(Exceptione){
e.printStackTrace();
}finally{
lock.unlock();
}
}
publicstaticvoidmain(String[]args){
ReentrantDemoreentrantDemo=newReentrantDemo();
newThread(reentrantDemo).start();
}
}原文来自:https://www.py.cn © 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


















































暂无评论内容