S'il vous plaît confirmer que ce code XMPP n'est pas threadsafe
-
06-09-2019 - |
Question
Je lis le code source à l'api Smack et la méthode XMPPConnection # disconnect ressemble à ceci:
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;
}
Dans mon scénario, je stocke un XMPPConnection en direct dans une classe appelée session. Un fil d'exécution séparé tentera de fermer mon instance de XMPPConnection en appelant Session # shutdown () . Comme je le vois, je dois dire en coopération pour fermer la session XMPPConnection par l'acquisition d'un mutex ou quelque chose. Correct?
La solution
On dirait que c'est un bug connu .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow