1
我讀的源代碼的拍擊API和方法XMPPConnection#斷開看起來是這樣的:請確認這XMPP代碼不是線程安全的
public void disconnect(Presence unavailablePresence) {
// If not connected, ignore this request.
if (packetReader == null || packetWriter == null) {
return;
}
shutdown(unavailablePresence);
if (roster != null) {
roster.cleanup();
roster = null;
}
wasAuthenticated = false;
packetWriter.cleanup();
packetWriter = null;
packetReader.cleanup();
packetReader = null;
}
我的方案,我存儲一個名爲Session的類中的實時XMPPConnection。 單獨的執行線程將通過調用會話#shutdown()來嘗試關閉XMPPConnection的實例。正如我所看到的,我將不得不合作告訴Session通過獲取互斥體或其他東西來關閉XMPPConnection。正確?
感謝您指出錯誤。在調用它之前,我不可避免地會在外部進行同步。和平。 – 2009-04-09 04:39:47