是消息线程安全

时间:2013-12-12 07:27:33

标签: java multithreading concurrency thread-safety jms

JMS 2.0规范2.14节:

  

JMS可能要求其所有对象都支持并发使用。   由于对并发访问的支持通常会增加一些开销   复杂性,JMS设计限制了它对并发的要求   访问那些自然会被a共享的对象   多线程客户端。其余的对象设计为   一次由一个逻辑控制线程访问。

支持并发使用: 目的地,ConnectionFactory,连接

不支持并发使用: JMSContext,Session,Producer,consumer

不确定为什么在规范中没有讨论Message的线程安全性?

修改

消息线程安全吗?两个线程可以在没有竞争的情况下共享吗?

没有。消息不是线程安全的。它不应该在线程之间共享。

1 个答案:

答案 0 :(得分:1)

消息不是线程安全的。消息是可变的,它有setter,所以当一个线程使用Message时,另一个线程可以干扰并改变它。