首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

并发编程回望:synchronized与Lock

2013-06-26 
并发编程回顾:synchronized与Lock上面程序中,让read方法持有锁1s,且只进行读操作打印data值,write方法持有

并发编程回顾:synchronized与Lock

上面程序中,让read方法持有锁1s,且只进行读操作打印data值,write方法持有锁的时间稍短一些0.1s,同时进行写操作给data赋值。

进行读写操作:

此处启动3个线程,一个循环写入data随机数,另外2个线程循环读取data值。

class RWDictionary {    private final Map<String, Data> m = new TreeMap<String, Data>();    private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();    private final Lock r = rwl.readLock();    private final Lock w = rwl.writeLock();    public Data get(String key) {        r.lock();        try { return m.get(key); }        finally { r.unlock(); }    }    public String[] allKeys() {        r.lock();        try { return m.keySet().toArray(); }        finally { r.unlock(); }    }    public Data put(String key, Data value) {        w.lock();        try { return m.put(key, value); }        finally { w.unlock(); }    }    public void clear() {        w.lock();        try { m.clear(); }        finally { w.unlock(); }    }}
使用读锁get数据和获取key,使用写锁put数据和清除map。注意要unlock。

?

热点排行