正确答案是C。读写锁的核心特性是允许多个线程同时获取读锁,实现并发读取,但写锁是独占的,且读锁和写锁之间互斥。
正确答案是B。ReentrantReadWriteLock只支持锁降级,不支持锁升级。锁降级是指持有写锁的线程可以获取读锁,然后释放写锁。不支持锁升级是为了避免死锁。
正确答案是B。StampedLock的主要优势是提供了乐观读模式,这是一种无锁操作,通过版本号检查数据是否被修改,在读多写少的场景下性能更优。
正确答案是B。乐观读的正确使用方式是:先调用tryOptimisticRead()获取stamp,读取数据,然后使用validate()方法检查stamp是否有效,如果无效则需要降级为悲观读。
正确答案是C。读写锁最适合读多写少的场景,因为它允许多个线程同时进行读操作,只有在写操作时才需要独占访问,这样可以显著提高并发性能。