java多线程ReadWriteLock读写锁
Posted 500年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程ReadWriteLock读写锁相关的知识,希望对你有一定的参考价值。
ReadWriteLock读写锁
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class ReadWriteLockDemo {
public static void main(String[] args) {
ReadWriteLockDemo a = new ReadWriteLockDemo();
for (int i = 1; i <= 6; i++) {
final int temp = i;
new Thread(() -> {
a.put(temp + "", temp + "");
}, String.valueOf(i)).start();
}
for (int i = 1; i <= 6; i++) {
final int temp = i;
new Thread(() -> {
a.get(temp + "");
}, String.valueOf(i)).start();
}
}
private volatile Map<String, String> map = new HashMap<String, String>();
ReadWriteLock readWriteLock=new ReentrantReadWriteLock();
public void put(String key, String value) {
readWriteLock.writeLock().lock();
System.out.println(Thread.currentThread().getName() + "写入");
map.put(key, value);
System.out.println(Thread.currentThread().getName() + "写入完成");
readWriteLock.writeLock().unlock();
}
public String get(String key) {
readWriteLock.readLock().lock();
System.out.println(Thread.currentThread().getName() + "读取");
String string = map.get(key);
System.out.println(Thread.currentThread().getName() + "读取完成");
readWriteLock.readLock().unlock();
return string;
}
}
运行结果
1写入
1写入完成
3写入
3写入完成
2写入
2写入完成
4写入
4写入完成
5写入
5写入完成
6写入
6写入完成
4读取
4读取完成
6读取
2读取
5读取
5读取完成
1读取
2读取完成
3读取
6读取完成
3读取完成
1读取完成
特别鸣谢:狂神说Java老师的无私奉献
.
.
.
上一篇 java多线程(三) Semaphore 信号量 限流线程
下一篇 java多线程(五)ArrayBlockingQueue阻塞队列
以上是关于java多线程ReadWriteLock读写锁的主要内容,如果未能解决你的问题,请参考以下文章
Java——多线程高并发系列之ReadWriteLock读写锁
Java——多线程高并发系列之ReadWriteLock读写锁