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

  • 比如如下代码,降级了并没有并发执行啊?

      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: 1103
    Thread-2 be ready to write data!
    Thread-2 have write data: 4531
    Thread-1 be ready to write data!
    Thread-1 have write data: 2188
    也并没有并发执行啊


三国纷争
浏览 1652回答 2
2回答

当年话下

你这里3个线程都是要写数据 怎么可能会并发执行,Thread-0 调用put的时候占用了write锁,Thread-1和Thread-2都被挡在外面了;锁降级的意义是当前线程由write降为read,其他只需要read锁的线程可以去获取read锁,达到并发读的目的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java