JAVA临界区资源的读写

2017-10-16  本文已影响0人  抽象语法树

临界区

实现临界区并发访问的两只机制

synchronized关键字机制

Lock接口以及其实现机制

ReadWriteLock实现对资源的线程安全读写

public class PricesInfo {
    
    private double price1;
    private double price2;
    
    private ReadWriteLock lock;

    public PricesInfo() {
        this.price1 = 1.0;
        this.price2 = 2.0;
        this.lock = new ReentrantReadWriteLock();
    }
    
    public double getPrice1() {
        lock.readLock().lock();
        double value=price1;
        price1=Math.random()*10;
        lock.readLock().unlock();
        return value;
    }
    
    public double getPrice2() {
        lock.readLock().lock();
        double value=price2;
        price2=Math.random()*10;
        lock.readLock().unlock();
        return value;
    }
    
    public void setPrice(double price1, double price2) {
        lock.writeLock().lock();
        
        this.price1=price1;
        this.price2=price2;
        
        lock.writeLock().unlock();
    }
    
    
    
}

首先定义了一个价格修改和查看的类,获取价格是用readLock的lock()方法锁定的,而设置价格则是由writeLock实现。

Lock和Synchronized的简单区别

上一篇 下一篇

猜你喜欢

热点阅读