iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java guava monitor监视器线程怎么用
  • 511
分享到

Java guava monitor监视器线程怎么用

2023-06-25 12:06:48 511人浏览 独家记忆
摘要

小编给大家分享一下Java guava monitor监视器线程怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Maven依赖<dependency&g

小编给大家分享一下Java guava monitor监视器线程怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Maven依赖

<dependency>            <groupId>com.Google.guava</groupId>            <artifactId>guava</artifactId>            <version>31.0.1-jre</version>        </dependency>

代码

不废话上代码。

package com.huyi.csdn.tools; import cn.hutool.core.thread.ThreadUtil;import com.google.common.util.concurrent.Monitor;import org.springframework.scheduling.concurrent.CustomizableThreadFactory; import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.function.Function; public class MonitorRunner<T> implements Runnable {  private T param;  private Function<T, Boolean> condition;  private Runnable runnable;  private Monitor monitor;     public MonitorRunner(T param, Function<T, Boolean> condition, Runnable runnable) {    this.param = param;    this.condition = condition;    this.runnable = runnable;    monitor = new Monitor();  }   @Override  public void run() {    System.out.println("线程开始");    Monitor.Guard guard =        new Monitor.Guard(monitor) {          @Override          public boolean isSatisfied() {            return condition.apply(param);          }        };     while (true) {      if (monitor.enterIf(guard)) {        try {          runnable.run();        } finally {          monitor.leave();          break;        }      } else {        continue;      }    }  }   public T getParam() {    return param;  }   public MonitorRunner<T> setParam(T param) {    this.param = param;    return this;  }   public static void main(String[] args) {    ExecutorService executorService =        Executors.newFixedThreadPool(10, new CustomizableThreadFactory("MONITOR-"));    MonitorRunner<Integer> monitorRunner =        new MonitorRunner<>(            0,            x -> x > 10,            () -> {              // todo 线程需要执行的内容              System.out.println("今天天气真好");            });    executorService.submit(monitorRunner);    while (monitorRunner.getParam() <= 10) {      monitorRunner.setParam(monitorRunner.getParam() + 1);      ThreadUtil.sleep(1000L);      System.out.println("当前Param的值:" + monitorRunner.getParam());    }    ThreadUtil.sleep(5000L);    executorService.shutdown();  }}

代码说明

主要在构造对象的时候需要传递泛型的校验对象,以及断言和需要执行的Runable。

执行结果

Java guava monitor监视器线程怎么用

以上是“Java guava monitor监视器线程怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java guava monitor监视器线程怎么用

本文链接: https://www.lsjlt.com/news/304643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java guava monitor监视器线程怎么用
    小编给大家分享一下Java guava monitor监视器线程怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Maven依赖<dependency&g...
    99+
    2023-06-25
  • Java guava monitor监视器线程的使用详解
    Maven依赖 <dependency> <groupId>com.google.guava</groupI...
    99+
    2024-04-02
  • C#多线程锁lock和Monitor怎么用
    本文小编为大家详细介绍“C#多线程锁lock和Monitor怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#多线程锁lock和Monitor怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1,Loc...
    99+
    2023-06-29
  • C#怎么使用Monitor类实现线程同步
    这篇文章主要讲解了“C#怎么使用Monitor类实现线程同步”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么使用Monitor类实现线程同步”吧!一、简介Lock关键字是Monitor...
    99+
    2023-06-30
  • 怎么在Java中使用线程工厂监控线程池
    这期内容当中小编将会给大家带来有关怎么在Java中使用线程工厂监控线程池,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。ThreadFactory线程池中的线程从哪里来呢?就是ThreadFoctorypu...
    99+
    2023-06-14
  • Java怎么给按钮添加监视器
    这篇“Java怎么给按钮添加监视器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java怎么给按钮添加监视器”文章吧。第一种...
    99+
    2023-07-05
  • Java效率提升神器之Guava-Joiner怎么使用
    今天小编给大家分享一下Java效率提升神器之Guava-Joiner怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。J...
    99+
    2023-07-02
  • Java开发利器之Guava Cache的使用教程
    目录前言缓存的意义Guava Cache特色API介绍Builder配置简单示例本地缓存前言 缓存技术被认为是减轻服务器负载、降低网络拥塞、增强Web可扩展性的有效途径之一,其基本思...
    99+
    2024-04-02
  • Java线程池怎么用
    小编给大家分享一下Java线程池怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、什么是线程池?线程池是一种用于实现计算机程序并发执行的软件设计模式。线程池...
    99+
    2023-06-15
  • Java多线程怎么用
    这篇文章主要介绍了Java多线程怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、概念1.进程1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一...
    99+
    2023-06-17
  • Java利用线程工厂监控线程池的实现示例
    ThreadFactory 线程池中的线程从哪里来呢?就是ThreadFoctory public interface ThreadFactory { Thread ne...
    99+
    2024-04-02
  • java怎么使用线程池启动多线程
    在 Java 中,可以使用线程池来启动多线程。以下是使用线程池启动多线程的示例代码:首先,需要导入 `java.util.concu...
    99+
    2023-09-15
    java
  • SpringBoot线程池和Java线程池怎么使用
    这篇文章主要介绍“SpringBoot线程池和Java线程池怎么使用”,在日常操作中,相信很多人在SpringBoot线程池和Java线程池怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringB...
    99+
    2023-07-06
  • 怎么对Java 线程池的运行状态进行监控
    怎么对Java 线程池的运行状态进行监控?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。总线程数 = 排队线程数 + 活动线程数 + 执行完成的线程数下面给出一个线程池使用示...
    99+
    2023-06-06
  • Java监听器ActionListener怎么使用
    ActionListener是一个接口,用于处理按钮点击事件。要使用ActionListener,需要实现这个接口并实现它的抽象方法...
    99+
    2023-08-16
    Java
  • Java监听器MouseListener怎么使用
    在Java中,使用MouseListener监听器来处理鼠标事件。MouseListener接口定义了五个方法,分别是:1. `vo...
    99+
    2023-08-16
    Java
  • .NET监视程序中死锁怎么处理
    这篇文章将为大家详细讲解有关.NET监视程序中死锁怎么处理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。监视程序主要是用来监控是否出现死锁等情况,但是这种.NET监视程序一般只能在测试中使用,如果大范围使...
    99+
    2023-06-17
  • 怎么用VBS实现监视进程创建与删除
    这篇文章主要讲解了“怎么用VBS实现监视进程创建与删除”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用VBS实现监视进程创建与删除”吧!监视进程的创建,在每次创建新的进程时,临时事件消费...
    99+
    2023-06-08
  • Java中怎么使用线程组
    这篇文章主要介绍“Java中怎么使用线程组”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java中怎么使用线程组”文章能帮助大家解决问题。Java中线程组(Thre...
    99+
    2024-04-02
  • Java线程启动怎么用start()
    本篇内容介绍了“Java线程启动怎么用start()”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、直接调用线程的run()方法publi...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作