Java在线程之间共享对象

时间:2013-05-13 22:18:42

标签: java multithreading synchronization volatile

我有一个数据库对象,它以各种数据结构存储对象。有几个线程访问此数据库,但数据库并不总是最新的。 如果我在一个线程中更改对象的名称,则更改仅反映在其他线程中,如果它们尚未访问该对象。 如果我在一个线程中添加一个新项,则所有线程都能够查看此项。

我已经尝试将数据库对象声明为volatile,但问题仍然存在,而且我完全没有想法......

谢谢!

编辑:问题被追溯到我的objectOutputStream上没有调用.reset()

2 个答案:

答案 0 :(得分:1)

您需要同步对数据库对象实例的访问。

在Java中,有两个基本同步习惯用法:

  • synchronized方法(将synchronized关键字应用于访问数据库对象实例的方法)
  • synchronized语句(包含访问synchronized块内的数据库对象实例的代码)。

More details

答案 1 :(得分:0)

好吧,你可以复制数据是一个新实例,并在这个实例上运行OP 像memcached缓存设计。 步:    1.get实例    2.复制实例    3.修改实例    4.使用