美文网首页
并发编程工具(九)Guava-Monitor

并发编程工具(九)Guava-Monitor

作者: 圆企鹅i | 来源:发表于2021-07-01 17:50 被阅读0次

    Guava实现的另一种锁的写法
    获取锁的界限变得比较明显 抽象成了一个guard对象

    package com.wangwenjun.concurrent.juc.utils;
    import com.google.common.util.concurrent.Monitor;
    import static java.lang.Thread.currentThread;
    
    public class MonitorExample1
    {
        // 定义Monitor对象
        private static Monitor monitor = new Monitor();
        // 共享数据,一个简单的int类型数据
        private static int x = 0;
        // 定义临界值,共享数据的值不能超过MAX_VALUE
        private static final int MAX_VALUE = 10;
        // 定义Guard 并且实现isSatisfied方法
        private static final Monitor.Guard INC_WHEN_LESS_10 = new Monitor.Guard(monitor)
        {
            // 该方法就相当于我们在写对象监视器或者Condition时的临界值判断逻辑
            @Override
            public boolean isSatisfied()
            {
                return x < MAX_VALUE;
            }
        };
        // 注释①
        public static void main(String[] args)
                throws InterruptedException
        {
            while (true)
            {
               // 注释②
                monitor.enterWhen(INC_WHEN_LESS_10);
                try
                {
                    x++;
                    System.out.println(currentThread() + ": x value is: " + x);
                } finally
                {
                // 注释③
                    monitor.leave();
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:并发编程工具(九)Guava-Monitor

          本文链接:https://www.haomeiwen.com/subject/bujojltx.html