2010-02-15 126 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提供者。