Java8-Lock-No.04

来源:互联网 发布:c语言define函数 编辑:程序博客网 时间:2024/06/07 12:25
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);    }}
原创粉丝点击