打字猴:1.700451089e+09
1700451089
1700451090 (1)Lock支持更细粒度的锁控制
1700451091
1700451092 假设读写锁分离,写操作时不允许有读写操作存在,而读操作时读写可以并发执行,这一点内部锁就很难实现。显式锁的示例代码如下:
1700451093
1700451094 class Foo{
1700451095
1700451096 //可重入的读写锁
1700451097
1700451098 private final ReentrantReadWriteLock rwl=new ReentrantReadWriteLock();
1700451099
1700451100 //读锁
1700451101
1700451102 private final Lock r=rwl.readLock();
1700451103
1700451104 //写锁
1700451105
1700451106 private final Lock w=rwl.writeLock();
1700451107
1700451108 //多操作,可并发执行
1700451109
1700451110 public void read(){
1700451111
1700451112 try{
1700451113
1700451114 r.lock();
1700451115
1700451116 Thread.sleep(1000);
1700451117
1700451118 System.out.println(“read……”);
1700451119
1700451120 }catch(InterruptedException e){
1700451121
1700451122 e.printStackTrace();
1700451123
1700451124 }finally{
1700451125
1700451126 r.unlock();
1700451127
1700451128 }
1700451129
1700451130 }
1700451131
1700451132 //写操作,同时只允许一个写操作
1700451133
1700451134 public void write(Object_obj){
1700451135
1700451136 try{
1700451137
1700451138 w.lock();
[ 上一页 ]  [ :1.700451089e+09 ]  [ 下一页 ]