赞
踩
本文翻译自http://tutorials.jenkov.com/java-util-concurrent/readwritelock.html,人工翻译,仅供学习交流。
readwritelock是一种高级的线程锁机制,它允许多个线程读取某个资源,但一次只能有一个线程写入它。
其思想是,多个线程可以同时从共享资源中读取,而不会导致并发性错误。并发错误首先发生在对共享资源的读写并发发生时,或者多个写入并发发生。
在本文中,我只介绍了Java内置的ReadWriteLock。如果您想了解更多关于ReadWriteLock实现背后的理论.。你可以在我的Java并发教程中读到Read - Write Locks。
允许线程在读取或写入保护资源时锁定ReadWriteLock的规则如下 :
ReadWriteLock是一个接口,使用ReadWriteLock需要用到实现类。java.util.concurrent.locks包包含以下ReadWriteLock实现:
下面是一个简单的代码示例,演示了如何创建ReadWriteLock以及读写如何锁定:
ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); readWriteLock.readLock().lock(); // multiple readers can enter this section // if not locked for writing, and not writers waiting // to lock for writing. readWriteLock.readLock().unlock(); readWriteLock.writeLock().lock(); // only one writer can enter this section, // and only if no threads are currently reading. readWriteLock.writeLock().unlock();
请注意ReadWriteLock实际上是如何在内部保存两个Lock实例的。一个保护读访问,一个保护写访问。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。