易截截图软件、单文件、免安装、纯绿色、仅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 ......

Java 编程技术中汉字问题的分析及解决

Java 编程技术中汉字问题的分析及解决
现在 Java 编程语言已经广泛应用于互联网世界,早在 Sun 公司开发 Java 语言的时候,就已经考虑到对非英文字符的支持了。Sun 公司公布的 Java 运行环境(JRE)本身就分英文版和国际版,但只有国际版才支持非英文字符。不过在 Java 编程语言的应用中,对中文字符的支持并非如同 Java S ......

Java的(PO,VO,TO,BO,DAO,POJO)解释

PO(persistant object) 持久对象
在 o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
......

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

public class SHA1 {
    private final int[] abcde = {
            0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0
        };
    // 摘要数据存储数组
  &nb ......

32位不可逆加密算法Java实现

加密后是一个32位大写字母组合形式,并且本加密方法不可逆!
public String kljm(String dm,String kl)
{
String mw, cmm;
int k, i, tmp, a, hf, lf, bytes = 16;
int mm[], l,rand_seed;
rand_seed = 12345;
int len=kl.length();
if(len>=12) len=12;
mw =kl.substring(0,len) + dm.trim();
l = ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号