`
dengyin2000
  • 浏览: 1219022 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Read/Write Lock

阅读更多
public class SomeContainer { private Set<element> elements; private ReadWriteLock globalLock; private Lock readLock; private Lock writeLock; SomeContainer() {  elements = new HashSet<element>();  globalLock = new ReentrantReadWriteLock();  readLock = globalLock.readLock();  writeLock = globalLock.writeLock(); }  public void addElement(Element elem) {  writeLock.lock();  try {   elements.add(elem);  }  finally {   writeLock.unlock();  }  }  public void processElements(ElementProcessor processor) {  readLock.lock();  try {   Iterator<element> iter = elements.iterator();    while(iter.hasNext()) {     Element element = iter.next();     processor.processElement(element);  }  finally {   readLock.unlock(); }  // ... }interface ElementProcessor { void processElement(Element element);}</element></element></element>

 

So, in the example above, the first line in processElements will let everybody play at once so long as the write lock is not held. Then, when the write lock is requested, the requesting thread will be made to wait until all existing readers are done (no further readers will be let in), and then the writer thread may begin.

 

http://www.javalobby.com/java/forums/t45090.html

分享到:
评论

相关推荐

    linux下实现高性能读写锁(read/write lock)

    在给定的文件"rwlock.cpp"和"rwlock.h"中,我们可以看到一个实现了Windows的slim read/write lock算法的Linux版本。下面将详细讲解读写锁的工作原理、特性以及如何在Linux下实现。 首先,了解读写锁的基本概念: 1...

    软件工程中的多线程编程实践.pptx

    - 读写锁(Read/Write Lock):允许多个读操作或单一写操作。 - 自旋锁(Spin Lock):循环等待锁释放。 - **锁的优化**: - 使用无锁算法减少锁的竞争。 - 选择适当的锁类型。 - 采用细粒度锁减少锁定范围。 ...

    北京一家JAVA开发公司面试题

    - **读写锁(Read/Write Lock)**:允许多个线程同时读取共享资源,但在写入时只允许一个线程访问。 - **生产者-消费者模式**:用于解决线程之间数据传递的问题,其中有一个缓冲区,生产者线程向缓冲区添加数据,...

    ReadWriteLock

    3. `void lockWrite()`: 获取写锁,这将阻塞所有试图获取读锁或写锁的线程,直到写锁被释放。 4. `void unlockWrite()`: 释放写锁,允许其他线程获取读锁或写锁。 在`ReadWriteLock.cpp` 文件中,实现可能基于...

    Pattens In Java.pdf

    ### 基本设计模型(Fundamental Design Patterns) #### 1.1 授权(Delegation)(When not to use inheritance) **特点:** 在面向对象编程中,继承是一种常用的设计方式,但有时它并不是最合适的解决方案。...

    read-write-lock:读与写互斥,写与所有事物互斥

    var createMutex = require ( 'read-write-lock' ) var mutex = createMutex ( ) mutex . writeLock ( function ( release ) { // lol I've got a write lock which means that nobody else can do anything ...

    Linux,rcu_lock

    #### rcu_read_lock/rcu_read_unlock - **描述**:用于标记一个RCU读侧临界区的开始和结束。这使得写操作能够检测到并发的读操作,并延迟回收直到当前所有的读操作完成。 - **使用**:在读取共享数据前调用`rcu_...

    如何利用MSP430的FLASH储存空间

    这段代码提供了两种方式来将数据写入FLASH:`write_flash_char` 和 `write_flash_int` 分别用于写入字符型数组和整型数组。此外,还有一个 `read_flash_char0` 函数用于读取单个字节的数据。这些函数通过设置MSP430...

    锁实现lock

    在实际应用中,还可以使用读写锁(read-write lock,即`pthread_rwlock_t`)来优化读多写少的情况,允许多个线程同时读取但仅允许一个线程写入。 最后,记得在程序结束时销毁锁: ```c pthread_mutex_destroy(&lock...

    windows 读写锁 (基于关键区的读写锁类 及自动锁)

    其中,读写锁(Read-Write Lock,简称RWLock)是一种高效的线程同步机制,适用于大量读取操作和少量写入操作的情况。在本文中,我们将深入探讨基于关键区的Windows读写锁类及其自动锁的实现原理和改进点。 读写锁的...

    one lock.zip

    为了解决这个问题,程序员会使用各种类型的锁,如互斥锁(Mutex)、读写锁(Read-Write Lock)、自旋锁(Spinlock)、信号量(Semaphore)等。 1. **互斥锁(Mutex)**:互斥锁是最基本的同步机制,它保证任何时刻...

    rwlock:Haxe 的读写锁

    读写锁 ... 仅在定义了 READ_WRITE_LOCK_SUPER 时才公开。 表现 定义: 首先,让我们创建一些对象: k: a lock R: number of readers W: number of writers 为简单起见,假设我们有 1 个操作/读取器和

    sqlite3.exe

    svn: E720003: Can't set file 'XXXXXX' read-write: 系统找不到指定的路径。 1. 将sqlite3.exe放到.svn目录下 2. 在.svn目录下执行: sqlite3 wc.db "delete from work_queue" sqlite3 wc.db "delete from wc_lock...

    open file view

    For each opened file, additional information is displayed: handle value, read/write/delete access, file position, the process that opened the file, and more... Optionally, you can also close one or ...

    iOS中的各种锁

    3. **读写锁(Read-Write Lock)**:读写锁允许多个读取线程同时访问,但写入操作会独占资源。iOS中没有内置的读写锁,但可以使用`NSLock`或`pthread_rwlock`来模拟: ```swift class ReadWriteLock { private let...

    简单读写锁实例代码

    在C++编程中,读写锁(Read-Write Lock)是一种多线程同步机制,它允许多个线程同时读取共享资源,但只允许一个线程写入。这种锁机制提高了对共享数据的并发访问效率,是并发编程中常用的一种工具。本实例将通过代码...

Global site tag (gtag.js) - Google Analytics