Smack Component 多线程环境下的问题解决
生活随笔
收集整理的這篇文章主要介紹了
Smack Component 多线程环境下的问题解决
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
? ? 昨天晚上一直在調試一個奇怪的問題。該問題就大流量的情況下就會出現。
? (注:以后凡是奇怪的問題,而且是性能測試出現的,先往多線程這兒走)
? ? 用一個小片段的代碼來說明這個問題:
? ??
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,發現里面定義了成員變量,先問問為什么要定義這些成員?他們線程安全嗎?
? ? ?寫到這兒,就回憶起,這種問題其實碰到過好多次了。再提醒一下自己把。
轉載于:https://my.oschina.net/u/145002/blog/39618
總結
以上是生活随笔為你收集整理的Smack Component 多线程环境下的问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三、oracle 用户管理一
- 下一篇: cocos2d-x学习笔记15:coco