为了账号安全,请及时绑定邮箱和手机立即绑定

读写锁ReentrantReadWriteLock锁降级的意义是什么啊

读写锁ReentrantReadWriteLock锁降级的意义是什么啊

三国纷争 2018-07-24 11:14:31
比如如下代码,降级了并没有并发执行啊?  public void put(Object data){             rwl.writeLock().lock();             rwl.readLock().lock();             System.out.println(Thread.currentThread().getName() + " be ready to write data!");                                 try {                 Thread.sleep((long)(Math.random()*1000));             } catch (InterruptedException e) {                 e.printStackTrace();             }             this.data = data;                     System.out.println(Thread.currentThread().getName() + " have write data: " + data);                                 rwl.readLock().unlock();             rwl.writeLock().unlock();         }输出:Thread-0 be ready to write data!Thread-0 have write data: 1103Thread-2 be ready to write data!Thread-2 have write data: 4531Thread-1 be ready to write data!Thread-1 have write data: 2188也并没有并发执行啊
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

你这里3个线程都是要写数据 怎么可能会并发执行,Thread-0 调用put的时候占用了write锁,Thread-1和Thread-2都被挡在外面了;锁降级的意义是当前线程由write降为read,其他只需要read锁的线程可以去获取read锁,达到并发读的目的。


查看完整回答
反对 回复 2018-08-12
  • 2 回答
  • 0 关注
  • 1651 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号