java 根据http传过来的参数判断

对方硬件是个门磁(有多个这样的设备) 调用我API通过http传送参数过来 开门为0 关门为1

现在要实现如果关门40分钟就发出警报,请问大家有什么思路吗?

我的思路是:
如果传过来的statu为0 开始计时(新建线程来计时)

如果计时的时间超过40分钟,发出警报。

直到传过来的statu为1 结束计时 (问题:如果多个线程 不知道如何结束上面的线程)


拉丁的传说
浏览 651回答 2
2回答

狐的传说

起一个线程判断就可以了。&nbsp; &nbsp; //记录上次关门时间戳,每次关门修改这个值private static volatile long[] closeTime = new long[5];static{&nbsp; &nbsp; //初始化所有门&nbsp; &nbsp; closeTime[0] = System.currentTimeMillis();&nbsp; &nbsp; closeTime[1] = System.currentTimeMillis();&nbsp; &nbsp; closeTime[2] = System.currentTimeMillis();&nbsp; &nbsp; closeTime[3] = System.currentTimeMillis();&nbsp; &nbsp; closeTime[4] = System.currentTimeMillis();}public static void main(String[] args) throws Exception {&nbsp; &nbsp; new Thread(new Runnable() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void run() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while(true){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = 0 ; i < 5 ; i ++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(System.currentTimeMillis() - closeTime[i] >= 1000*60*40){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //alarm ith door&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Thread.sleep(1000);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (InterruptedException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }).start();}

大话西游666

如果确保对方间隔固定时间都会发送状态过来的话,连线程都不需要开。开线程是为了处理对方一直不发送状态的情况,以避免硬件被破坏导致通讯中断的情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java