Java8-Lock-No.05

来源:互联网 发布:c语言define函数 编辑:程序博客网 时间:2024/06/07 10:24
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.locks.StampedLock;public class Lock5 {    public static void main(String[] args) {        ExecutorService executor = Executors.newFixedThreadPool(2);        StampedLock lock = new StampedLock();        executor.submit(() -> {            long stamp = lock.tryOptimisticRead();            try {                System.out.println("Optimistic Lock Valid: " + lock.validate(stamp));                ConcurrentUtils.sleep(1);                System.out.println("Optimistic Lock Valid: " + lock.validate(stamp));                ConcurrentUtils.sleep(2);                System.out.println("Optimistic Lock Valid: " + lock.validate(stamp));            } finally {                lock.unlock(stamp);            }        });        executor.submit(() -> {            long stamp = lock.writeLock();            try {                System.out.println("Write Lock acquired");                ConcurrentUtils.sleep(2);            } finally {                lock.unlock(stamp);                System.out.println("Write done");            }        });        ConcurrentUtils.stop(executor);    }}