易截截图软件、单文件、免安装、纯绿色、仅160KB

Java线程之Read Write Lock Pattern

Read-Write Lock Pattern的参与者:
1. Reader(读取者)参与者
    Reader参与者会对SharedResource参与者进行read。
2. Writer(写入者)参与者
    Writer参与者会对SharedResource参与者进行write。
3. SharedResource(共享资源)参与者
    SharedResource参与者代表Reader与Writer所共享的资源。
    SharedResource参与者会提供不会改变内部状态的操作(read)和会改变内部状态的操作(write)。
4. ReadWriteLock(读写用锁定)参与者
    ReadWriteLock参与者提供了对SharedResource参与者进行read操作与进行write操作时需要的锁定。
    为了完成read操作,提供了readLock与readUnlock。
    为了完成write操作,提供了writeLock和writeUnlock。
------------------------------
Read-Write Lock Pattern适合读取比写入次数频繁的情况。
Read-Write Lock Pattern李永乐读取操作彼此之间不会冲突的特性,使得多个Reader参与者可以同时进行read,以提升程序的性能。
不过当写入操作频率较高时,Writer参与者会经常阻拦Reader参与者的read操作的进行,这样也就无法展现Read-Write Lock Pattern的优点了。
------------------------------
一个 ReadWriteLock参与者的实现:
public final class ReadWriteLock{
private int readingReaders = 0; // 实际正在读取的线程数
private int waitingWriters = 0; // 正在等待写入的线程数
private int writingWriters = 0; // 实际正在写入的线程数
private boolean preferWriter = true; // 是否写入优先
public synchronized void readLock() throws InterruptedException{
while(writingWriters >0 ||(preferWriter && waitingWriters >0)){
wait();
}
readingReaders++;
}
public synchronized void readUnlock() throws InterruptedException{
readingReaders--;
notifyAll();
}
public synchronized void writeLock() throws InterruptedException{
waitingWriters++;
try{
while(readingReaders>0||writingWriters>0){
wait();
}
}finally{
waitingWriters--;
}
writingWriters++;
}
public synchronized void writeUnlock() throws InterruptedException{
writingWriters--;
noti


相关文档:

Java6 脚本引擎(用Java调用JS脚本)调用js

Java6 脚本引擎(用Java调用JS脚本)调用js
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import javax.script.Invocable;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
 
&n ......

一个让98%java程序员犯难的问题的思考

源代码:
public class Parent

    protected  void test() {}
    public Parent()
    {
        this.test();
   }
    public static void main(String[] args)
  &nb ......

生产者消费者问题之Java线程实现

原贴内容请见: http://topic.csdn.net/u/20100116/17/6a204504-9e70-435f-be55-f0630ed12fdf.html?seed=942806558&r=62778073#r_62778073
请大牛指正.
产品类:
package selfimpr.producerCustomer;
/**
* 产品
* @author selfimpr
* @blog http://blog.csdn.net/lgg201
* @email lgg860911@yahoo.com.cn
......

Java 推荐读物与源代码阅读

Java 推荐读物与源代码阅读
                                             &n ......

SHA 1摘要算法源码(java版)

public class SHA1 {
    private final int[] abcde = {
            0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0
        };
    // 摘要数据存储数组
  &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号