이 XMPP 코드가 ThreadSafe가 아님을 확인하십시오
-
06-09-2019 - |
문제
Smack API에 소스 코드를 읽고 XMPPConnection# 메소드를 읽고 있습니다.연결을 끊습니다 이렇게 보인다 :
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;
}
내 시나리오에서는 세션이라는 클래스 내에 라이브 XMPPConnection을 저장하고 있습니다. 별도의 실행 스레드는 세션#을 호출하여 XMPPConnection 인스턴스를 닫으려고 시도합니다.일시 휴업(). 내가 알 수 있듯이, 나는 뮤텍스 같은 것을 얻음으로써 xmppconnection을 닫기 위해 세션에 협조해야 할 것이다. 옳은?
해결책
A 인 것 같습니다 알려진 버그.
제휴하지 않습니다 StackOverflow