gpt4 book ai didi

java - 我需要同步 writeObject() 吗?

转载 作者:行者123 更新时间:2023-12-02 00:25:42 25 4
gpt4 key购买 nike

我有一些通过 RMI 序列化同时访问的对象。最近我编写了自定义序列化方法:

/** This method is made to omit serialization of this.order */
private void writeObject(java.io.ObjectOutputStream out)
throws java.io.IOException
{
Order tmpOrder = this.order;
this.order = null;
out.defaultWriteObject();
this.order = tmpOrder;
}

private void readObject(java.io.ObjectInputStream in)
throws java.io.IOException, ClassNotFoundException
{
in.defaultReadObject();
}

我不想允许并发 RMI 线程破坏 this.order。

  1. 我需要使 writeObject 同步吗?或
  2. RMI 框架是否尽力同步对对象的访问?

在第二种情况下,我的同步甚至可能导致 RMI 死锁。 JAVA API的一般约定是,除非特别说明,方法由一个线程调用。因此,如果我应该遵循规则,我应该让 writeObject 不进行任何同步。这是正确的吗?

在不回答问题的情况下解决我的问题的另一个解决方案当然是声明private static final ObjectStreamField[]serialPersistentFields。 (我无法使字段 transient ,因为该对象不仅是 DTO,而且还是 JPA 实体)

最佳答案

I have some objects which are accessed concurrently by RMI serialization

不,你不知道。您有一些对象可以通过对象序列化同时访问。

Does the RMI framework do all the best to synchronize the access to the object?

没有。对象序列化框架可能会,但未指定。

关于java - 我需要同步 writeObject() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10103456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com