小编典典

用静态方法创建新的JAXB Marshaller实例……是ThreadSafe吗?

java

我已经使用以下静态方法实现了util类:

public static String objToXml(JAXBContext jaxbContext, ClassA obj) throws Exception{
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
    jaxbMarshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, true );
    StringWriter writer = new StringWriter();
    marshaller.marshal(obj, writer);
    return writer.toString();
}

我的理解是JAXB
Marshaller和StringWriter都是线程安全的……但是我想再次确认是否实现了这样的静态方法,并且有多个线程同时调用objToXml方法,是否有任何潜在的问题?


阅读 303

收藏
2020-11-30

共1个答案

小编典典

是的Marshaller,如果计划使用多线程,则必须每次都创建一个新的。

请参阅非官方的JAXB指南

JAXBContext类是线程安全的, 但是Marshaller,Unmarshaller和Validator不是线程安全的

2020-11-30