mina2多執行緒讀取重複資料的解決方案

2021-07-09 18:14:31 字數 2192 閱讀 1427

公司定製了乙個可以控制裝置的硬體,人家只支援socket,我用mina2做的客戶端連線,因為是多個人可以控制的所以硬體控制設定的連線只能有乙個,多個使用者用這個連線來控制裝置,用完鏈結放在快取裡面,超時自動斷掉,用的時候重新連線。

連線管理的**

public class manysocketpoolmangersingleton 

public static void setpool(keyedobjectpoolpool)

private manysocketpoolmangersingleton()

public static synchronized manysocketpoolmangersingleton getinstance()

return instance;

}}

連線的建立

public class minaconnectionclient 

public minaconnectionclient(int timeout)

public iosession create(string key)catch(exception e)catch(exception ee)

} return session; }

public iosession connection(string ip, int port)

//內部類,防止mina報沒在設定handler錯誤,也可以參照物com.dashu.visit.hardware.api.mina.oseamminaclienthandler寫乙個

private class iohander extends iohandleradapter {}

}

接受訊息處理

public class timeclienthander implements iohandler  

@override

public void messagereceived(iosession arg0, object message) throws exception

接收訊息的快取類

public class datacache 

array.push(s);

data.put(ip, array);

} public static listget(string ip)

} return list; }

}

快取的先進先出佇列類

public class stack

}/** 出棧,但不刪除 */

public t peek()

/** 出棧,刪除 */

public t pop()

/** 出棧,刪除 */

public t last()

/** 棧是否為空 */

public boolean empty()

/** 列印棧元素 */

public string tostring()

public listiteratorgetall()

測試讀寫的 **

public hardwarestatusforoseam control(string code,string ip) 

//過濾掉沒用的其他資訊

if (responecontent.startswith("f3c7") && responecontent.startswith(sendvalid, 4))

}} catch (exception e) finally

} catch(exception e)

} return result; }

public static void main(string args) throws interruptedexception

string s1= "f3c7012c200913ac";

hardwarestatusforoseam result1 = socketexplainationutil.parecontent(s1);

system.out.println(result1.isopen());

}

多執行緒導致資料重複新增

多執行緒有序執行的方法!參考 多執行緒和執行緒池的總結以及常見的面試問題 1.測試用例 test public void testthread throws interruptedexception t1.start t1.join list.clear thread t2 new thread n...

tensorflow多執行緒預讀取資料

在一般的講解中,tensorflow使用多執行緒讀取資料都會涉及到兩個概念,檔名佇列和檔案佇列。將原本簡單的概念繞的很複雜,而且不同的部落格還相互抄,毫無自己的理解。其實檔名佇列完全沒有必要,只要執行緒能將資料預讀取到檔案佇列,其他的處理咋弄都行。下面是我想到的用法 import tensorflo...

Tensorflow的佇列多執行緒讀取資料

在tensorflow中,有三種方式輸入資料 1利用feed dict送入numpy陣列 2利用佇列從檔案中直接讀取資料 3預載入資料 其中第一種方式很常用,在tensorflow的mnist訓練原始碼中可以看到,通過feed dict 可以將任意資料送入tensor中。第二種方式相比於第一種,速度...