import java
.util.HashMap
import java
.util.Map
import java
.util.concurrent.ExecutorService
import java
.util.concurrent.Executors
import java
.util.concurrent.locks.StampedLock
public class Lock4 {
public static void main(String[] args) {
ExecutorService executor = Executors
.newFixedThreadPool(
2)
Map<String, String> map = new HashMap<>()
StampedLock lock = new StampedLock()
executor
.submit(() -> {
long stamp = lock
.writeLock()
try {
ConcurrentUtils
.sleep(
1)
map
.put(
"foo",
"bar")
} finally {
lock
.unlockWrite(stamp)
}
})
Runnable readTask = () -> {
long stamp = lock
.readLock()
try {
System
.out.println(map
.get(
"foo"))
ConcurrentUtils
.sleep(
1)
} finally {
lock
.unlockRead(stamp)
}
}
executor
.submit(readTask)
executor
.submit(readTask)
ConcurrentUtils
.stop(executor)
}
}
转载于:https://www.cnblogs.com/bilaisheng/p/10210921.html