在静态方法中创建新的JAXB Marshaller实例......是ThreadSafe吗?

时间:2016-03-17 13:46:13

标签: java multithreading jaxb

我使用以下静态方法实现了一个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方法,是否会有任何潜在的问题?

1 个答案:

答案 0 :(得分:1)

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

请参阅Unofficial JAXB Guide

  

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