多线程-Lock

上一节提到了Lock代替synchronized关键字。Lock可以读写分离,读可以是并行的,但是一旦写操作进来后,读就不能并行,写只能是串行,就是同一个时间点只能有一个线程操作。

public class Product {  
 	private double price1;
	private double price2;
	private ReadWriteLock lock ;
	public Product() {
		price1 = 1.0;
		price2 = 2.0;
		lock = new ReentrantReadWriteLock();
	}
	public double getPrice1() {
		lock.readLock().lock();
		double price = price1;
		lock.readLock().unlock();
		return price;
	}
	
	public double getPrice2() {
		lock.readLock().lock();
		double price = price2;
		lock.readLock().unlock();
		return price;
	}
	public void  setPrices(double price1,double price2) {
		lock.writeLock().lock();
		this.price1 = price1;
		this.price2 = price2;
		lock.writeLock().unlock();
	}   
}

猜你喜欢

转载自hangzhoujava.iteye.com/blog/2266336