Dav*_*ann 16 java multithreading synchronization
我有一个简单的bean @Entity Message.java,它有一些正常的属性.该对象的生命周期如下
消息的实例化发生在线程A上,然后它被排入阻塞队列
池中的另一个线程获取该对象并使用它执行一些操作并更改Message的状态,之后,对象再次进入blockingQueue.重复该步骤直到条件使其停止.每次对象获取读/写时都可能来自不同的线程,但保证一次只有一个线程可以读/写.
鉴于这种情况,我是否需要同步getter/setter?也许这些属性会变化?或者我可以不同步而离开?
谢谢,希望我能澄清一下我在这里有什么.
eri*_*son 29
不,您不需要同步对对象属性的访问,甚至不需要对volatile成员变量使用.
在线程将对象排队到BlockingQueue"之前发生"对象之前由线程执行的所有操作.这意味着第一个线程所做的任何更改都是第二个线程可见的.这是并发集合的常见行为.见的最后一段的BlockingQueue类文档.
只要第一个线程在排队对象后没有进行任何修改,它就是安全的.
| 归档时间: |
|
| 查看次数: |
11170 次 |
| 最近记录: |