2010-02-15 131 views

回答

12

不,MessageProducer/QueueSender不是線程安全的。

或更具體地說:Session不是線程安全的。 Session的JavaDoc在第一句中明確提到了這一點:

Session對象是用於生成和使用消息的單線程上下文。

而且由於MessageProducer/QueueSender綁定到Session你不能在同一時間使用它從多個線程。事實上,你不能在不同的時間從兩個不同的線程使用它!

+0

非常感謝您的回覆 – mebada 2010-02-15 14:33:51

9

下面的截圖是從JMS2規格

enter image description here

正如你可以看到會話對象不通過併發線程支持使用。會話不是線程安全的對象。所有從該會話實例創建的對象的相同gos,例如Messages,Producers,Consumers。所以這些對象不能由兩個線程共享,這是客戶端應該關注的而不是JMS提供者。