/**
* @author yuanjin.ye
* @version 创建时间:2019/11/19
* @description:
*/
public class RedisDesign {
private volatile Map<String,Object> map = new HashMap<>();
private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();
public void put(String key,Object value){
rwLock.writeLock().lock();
try {
TimeUnit.SECONDS.sleep(1);
System.out.println(Thread.currentThread().getName()+"正在写入..."+key);
map.put(key,value);
System.out.println(Thread.currentThread().getName()+"写入完成...");
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
rwLock.writeLock().unlock();
}
}
public void get(String key){
rwLock.readLock().lock();
try {
TimeUnit.SECONDS.sleep(1);
System.out.println(Thread.currentThread().getName()+"正在读取..."+key);
map.get(key);
System.out.println(Thread.currentThread().getName()+"读取完成...");
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
rwLock.readLock().unlock();
}
}
}
测试类
public class RedisTest {
public static void main(String[] args) {
RedisDesign rd = new RedisDesign();
//MyChacheDemo rd = new MyChacheDemo();
for (int i = 0; i <5 ; i++) {
final int tempInt = i;
new Thread(()->{
rd.put("i"+tempInt,"i"+tempInt);
},"write"+i).start();
}
for (int i = 0; i <5 ; i++) {
final int tempInt = i;
new Thread(()->{
rd.get("i"+tempInt);
},"write"+i).start();
}
}
}
运行结果