请确认此XMPP代码不是线程安全的

时间:2009-04-09 03:34:08

标签: java multithreading concurrency xmpp

我正在阅读Smack api的源代码,方法XMPPConnection# disconnect 如下所示:

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存储在一个名为Session的类中。 单独的执行线程将尝试通过调用Session# shutdown()来关闭我的XMPPConnection实例。在我看来,我将不得不合作告诉Session通过获取互斥锁或其他东西来关闭XMPPConnection。正确的吗?

1 个答案:

答案 0 :(得分:4)

看起来像是known bug