ReentrantReadWriteLock读写锁的使用2(二)

2015-07-20 17:23:50 · 作者: · 浏览: 16
try { // Recheck state because another thread might have // acquired write lock and changed state before we did. if (!cacheva lid) { data = ... cacheva lid = true; } // Downgrade by acquiring read lock before releasing write lock rwl.readLock().lock(); } finally { rwl.writeLock().unlock(); // Unlock write, still hold read } } try { use(data); } finally { rwl.readLock().unlock(); } } }
?