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,发现里面定义了成员变量,先问问为何要定义这些成员?他们线程安全吗?线程

     写到这儿,就回忆起,这种问题其实碰到过好屡次了。再提醒一下本身把。调试

相关文章
相关标签/搜索