美文网首页
并发编程工具(九)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