Java8-Lock-No.03

来源:互联网 发布:wifi路由器网络不稳定 编辑:程序博客网 时间:2024/05/17 22:54
import java.util.HashMap;import java.util.Map;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class Lock3 {    public static void main(String[] args) {        ExecutorService executor = Executors.newFixedThreadPool(2);        Map<String, String> map = new HashMap<>();        ReadWriteLock lock = new ReentrantReadWriteLock();        executor.submit(() -> {            lock.writeLock().lock();            try {                ConcurrentUtils.sleep(1);                map.put("foo", "bar");            } finally {                lock.writeLock().unlock();            }        });        Runnable readTask = () -> {            lock.readLock().lock();            try {                System.out.println(map.get("foo"));                ConcurrentUtils.sleep(1);            } finally {                lock.readLock().unlock();            }        };        executor.submit(readTask);        executor.submit(readTask);        ConcurrentUtils.stop(executor);    }}