我的代碼生病了;看起來像一個相當簡單的對象寫入和讀取操作,似乎從未解僱其次要操作。遠程對等體上的內部類線程通過OOS發送ConcurrentHashMap
。線程objectoutputstream objectinputstream阻止不讀取
當到達 - 它確實如此 - 接收代碼繼續,在一個布爾確定的循環中,監聽OIS更新該CCHM。這些更新來自發送原始CCHM的兄弟姐妹(每個接收對端有一個服務兄弟)。這些兄弟姐妹使用的ObjectOutputStreams
取自兄弟姐妹的可見的HashMap
。兄弟姐妹不關心他們是否正在發送給該組的新成員,或者發送給現有成員。關於對等體是新的還是現有的區別僅在接收對等體側知道,其中原始CCHM被接收和使用,然後代碼繼續等待相同OIS上的更新。新加入的對等點將其詳細信息添加到遠程的Hashtable
中,因此每次發送給所有對等點(新的加上現有的n個對等點)時,要發送的CCHM是一個更大的元素。
但是,現有的同伴沒有收到更新的CCHM。而不是用我的代碼填充System.out.println()
的電話或粗暴地停止它,我可能忽略了陷入這個混亂的陷阱?
你能給我一些代碼嗎? – DankMemes