84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
对方硬件是个门磁(有多个这样的设备) 调用我API通过http传送参数过来 开门为0 关门为1
现在要实现如果关门40分钟就发出警报,请问大家有什么思路吗?
我的思路是:如果传过来的statu为0 开始计时(新建线程来计时)
如果计时的时间超过40分钟,发出警报。
直到传过来的statu为1 结束计时 (问题:如果多个线程 不知道如何结束上面的线程)
起一個線程判斷就可以了。
//记录上次关门时间戳,每次关门修改这个值 private static volatile long[] closeTime = new long[5]; static{ //初始化所有门 closeTime[0] = System.currentTimeMillis(); closeTime[1] = System.currentTimeMillis(); closeTime[2] = System.currentTimeMillis(); closeTime[3] = System.currentTimeMillis(); closeTime[4] = System.currentTimeMillis(); } public static void main(String[] args) throws Exception { new Thread(new Runnable() { @Override public void run() { while(true){ for(int i = 0 ; i < 5 ; i ++){ if(System.currentTimeMillis() - closeTime[i] >= 1000*60*40){ //alarm ith door } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); }
如果確保對方間隔固定時間都會發送狀態過來的話,連線程都不需要開。 開線程是為了處理對方一直不發送狀態的情況,以避免硬體被破壞導致通訊中斷的情況。
起一個線程判斷就可以了。
如果確保對方間隔固定時間都會發送狀態過來的話,連線程都不需要開。
開線程是為了處理對方一直不發送狀態的情況,以避免硬體被破壞導致通訊中斷的情況。