首页 > 其他分享 >线程实现每秒查询设备状态,有变化时执行其他操作

线程实现每秒查询设备状态,有变化时执行其他操作

时间:2024-09-03 14:26:42浏览次数:4  
标签:status 状态 code 查询 senor 线程 每秒 statusThread

1.写一个线程方法去判断状态值是否改变

    private void waitForDeviceStatus(IntByReference senor_code, IntByReference status_code, String targetHex) {
        Thread statusThread = new Thread(() -> {
            try {
                //在这里调用查看设备状态方法
                OwnershipMainSdk.LIB.HWX_GetDeviceStatus(senor_code, status_code);
                String currentHex = handleResult(status_code.toString());
                //比较获取到的状态是否是某个值,如果不是就继续获取设备状态
                while (!currentHex.equals(targetHex)) {
                    Thread.sleep(1000); // 每秒检查一次设备状态,可以根据实际情况调整
                    OwnershipMainSdk.LIB.HWX_GetDeviceStatus(senor_code, status_code);
                    currentHex = handleResult(status_code.toString());
                }
            } catch (InterruptedException e) {
                throw new BusinessException("获取设备状态失败");
            }
        });
        statusThread.start();

        try {
            statusThread.join(); // 等待statusThread线程执行完成
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

2.在需要时调用上述方法

waitForDeviceStatus(senor_code, status_code, "0");
log.info("获取到设备的状态0;");

标签:status,状态,code,查询,senor,线程,每秒,statusThread
From: https://www.cnblogs.com/lal520/p/18394458

相关文章

  • springboot+mybatisplus分页查询
    需求:类似sqlserversql语句查询top100条数据,如何在springboot+mybatisplus中实现(使用的是sqlserver2012数据库)1.pom文件中引入mybatisplus依赖<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><ar......
  • MediatR CQRS 命令查询责任分离
    MediatRCQRS目录结构├─MediatR_Demo│├─Application││└─Movies││├─Commands│││└─CreateMovie││└─Queries││├─GetMovie││└─GetMovies│├─Controllers│├─Core││......
  • [java][代码]Java中创建多线程方法
     在Java中,创建多线程有多种方法。以下是一些常见的方法:1.继承Thread类通过继承Thread类并重写其run方法来创建线程。classMyThreadextendsThread{publicvoidrun(){//线程要执行的任务System.out.println("线程运行中...");}......
  • 一个功能丰富的SQL审核查询平台
    前言今天大姚给大家分享一个功能丰富的SQL审核查询平台:Archery。核心功能SQL审核:提供SQL语句的审核功能,确保语句的安全性和效率。查询执行:支持SQL查询的执行,便于用户获取数据库中的数据。备份与回滚:集成备份功能,并能生成回滚语句,提升数据库运维的安全性。功能清单演示截图在线演示......
  • MySQL多表查询
    目录等值连接单表等值连接表别名多表等值连接自然连接USINGONUSING和ON的区别自连接外连接1.左外连接 LEFTOUTERJOIN2.右外连接 RIGHTOUTERJOIN子查询单行子查询多行子查询相关子查询EXISTS等值连接单表等值连接SELECT表名1.列名1,表名2.列名2FR......
  • 远程线程注入 Dll
    常用的线程注入方法有:远程线程注入、普通消息钩子注入、全局消息钩子注入、APC应用层异步注入、ZwCreateThreadEx强力注入和纯汇编实现的线程注入等。今天我们讲一下远程线程注入的这种方法,其原理是获取LoadLibrary系统函数的地址(我们知道系统函数的地址在每个进程中都是保持......
  • DWS(PG)自定义函数查询表注释 ,表结构
    createorreplacefunctionshow_table(tableNamevarchar2)returnstable(table_namevarchar2,column_namevarchar2,column_typevarchar2,attnotnullvarchar2,column_commentvarchar2)as$$begin returnquerySELECTc.relname::varchar2astable_name,......
  • java ThreadLocal做线程隔离
    `ThreadLocal`类提供了线程局部变量,每个线程都可以独立地访问自己的变量副本,而不会影响其他线程的副本。这在多线程环境中非常有用,可以避免线程间的数据共享和竞争条件,提高程序的线程安全性。###ThreadLocal的用法:1.**创建ThreadLocal对象**:首先需要创建一个`ThreadLocal`......
  • Java线程生命周期:Java线程生命周期全景解读
    1.线程生命周期概述:不仅仅是状态转换在多线程编程中,理解线程的生命周期对于编写有效、高效的代码至关重要。线程生命周期通常描述了线程从创建到死亡的一系列状态变化过程,但其实不仅仅局限于这些状态的简单转换。线程生命周期的理解应该考虑系统资源的分配、线程调度、同步、通信......
  • 多线程的使用-->3
    1.死锁在线程同步过程中,因为多线程争抢锁资源,所以有些线程会执行,有些线程会等待。如果线程A和线程B分别需要X和Y两个锁资源恰好A获得了X资源,准备争抢Y,而B获得了Y资源,准备争抢X,此时A和B就进入了一中死锁状态。如何解决死锁问题?①从业务逻辑层面解决让它们随机抢资源......