使用读写方法来实现读写锁:
package acm;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
*类描述:用读写方法实现读写锁
*@author: 张宇
*@date: 日期: 2018年9月10日 时间: 下午3:37:32
*@version 1.0
*/
public class ReadAndWriteLockTest {
// 读写锁对象
private ReadWriteLock readWriteLock=new ReentrantReadWriteLock();
//定义一个读写的数据
private String data="";
/**
* 进行读操作
* 可以多个读线程同时进入,写线程不能执行
*/
public String getReadWriteLock(){
//获取读锁,并加锁
Lock readLock=readWriteLock.readLock();
readLock.lock();
try{
System.out.println("线程名称:"+Thread.currentThread().getName());
return this.data;
}catch(Exception e){
e.printStackTrace();
}finally{
readLock.unlock();
}
return null;
}
/**
* 进行写操作
* 只有一个线程能进行写
*/
public void putReadWriteLock(String data){
//获取写锁,并加锁
Lock writeLock=readWriteLock.writeLock();
writeLock.lock();
try{
System.out.println("线程名称:"+Thread.currentThread().getName());
Thread.sleep(1000);
this.data=data;
}catch(Exception e){
e.printStackTrace();
}finally{
writeLock.unlock();
}
}
}