Smack Component 多線程環境下的問題解決

    昨天晚上一直在調試一個奇怪的問題。該問題就大流量的狀況下就會出現。java

  (注:之後凡是奇怪的問題,並且是性能測試出現的,先往多線程這兒走)安全

    用一個小片斷的代碼來講明這個問題:服務器

    

public class TestComponent implements org.xmpp.component.Component{
    
    private TestService service = new TestService();

    ........
    
    public void processPacket(Packet packet) {

        TestObject = service.handle(packet);

        ........
    }

    ........

}

     而後咱們用whack下面的ExternalComponentManager來包裝這個component並鏈接到openfire服務器上。多線程

     若是打開ExternalComponentManager的源碼就會發現,這個component的工做模式和java servlet相似。性能

     一個component的實例的processPacket會在一個線程池中被調用。若是TestService是一個非線程安全的類的話,確定會出問題。測試

     之後再碰到相似模式的java class,發現裏面定義了成員變量,先問問爲何要定義這些成員?他們線程安全嗎?線程

     寫到這兒,就回憶起,這種問題其實碰到過好屢次了。再提醒一下本身把。調試

相關文章
相關標籤/搜索