Jackson拥有ObjectReader,文档说明您需要使用它来确保线程安全。但我不明白如何正确地做

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;

import java.io.IOException;
import java.util.Map;

public class JsonParser {
    private ObjectMapper OBJECT_MAPPER = new ObjectMapper();
    private ObjectReader OBJECT_READER = new ObjectMapper().readerFor(Map.class);

    public Map<String, String> parseJson1(String json) throws IOException {
        ObjectReader objectReader = OBJECT_MAPPER.readerFor(Map.class);
        return objectReader.readValue(json);
    }

    public Map<String, String> parseJson2(String json) throws IOException {
        return OBJECT_READER.readValue(json);
    }
}

我写了两个样本
  • parseJson1()-在每个解析的
  • 上从ObjectMapper创建ObjectReader
  • parseJson2()-在ObjectReader上重用单个实例

  • 他们中哪一个是对的?

    最佳答案

    文档说它是“完全线程安全的”,这意味着您可以安全地使用parseJson2,而不必担心在并发线程中调用此方法。 ojita

    关于java - 如何正确和线程安全地重用Jackson ObjectReader?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35335646/

    10-09 21:06