gpt4 book ai didi

java - JAXB - 这些对象是无状态的 - JAXBContext、Marshaller、Unmarshaller

转载 作者:行者123 更新时间:2023-12-02 11:37:46 24 4
gpt4 key购买 nike

我正在编写一个库类,其中有多个方法,这些方法都需要以此类代码开头:

    JAXBContext jc = JAXBContext.newInstance(MODEL_PACKAGE);
Marshaller m = jc.createMarshaller();
Unmarshaller um = jc.createUnmarshaller();

因此,我正在考虑重用这 3 个对象 - 上下文、编码器和解码器(即,我正在考虑将它们构造一次,并将它们保留为对象/实例字段/变量)。

所以...我想知道它们是否 1) 无状态和 2) 线程安全?

1)我的意思是,一旦我使用例如我的一个方法中的编码器可以在另一种方法中重用它,而不必担心它可能包含我上次使用它时的一些剩余数据吗?

2)这些对象也是线程安全的,即我是否可以假设我的库类可以从多个线程调用而没有任何风险(如果我将这些对象存储为对象变量)?

最佳答案

JAXBContext - 是线程安全的,并且可以(并且必须)是单例。创建是一项昂贵的操作。

Marshaller 和 Unmarshaller 不是线程安全的!。您每次都必须创建它们。创建并不昂贵,而且几乎不需要时间(不到 1 毫秒)。

关于java - JAXB - 这些对象是无状态的 - JAXBContext、Marshaller、Unmarshaller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805913/

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