zoukankan      html  css  js  c++  java
  • Java8-Lock-No.05

    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);
        }
    
    }
    
  • 相关阅读:
    生命周期-BeanPostProcessor-后置处理器
    生命周期-@PostConstruct&@PreDestroy
    生命周期-InitializingBean和DisposableBean
    异常安全
    inline函数
    bool类型
    函数重载与默认参数
    C++强制转换
    引用
    new/delete表达式
  • 原文地址:https://www.cnblogs.com/bilaisheng/p/10210920.html
Copyright © 2011-2022 走看看