Java 是否应将GSON声明为静态最终版本?

Java 是否应将GSON声明为静态最终版本?,java,multithreading,thread-safety,gson,Java,Multithreading,Thread Safety,Gson,我在代码中使用Java可调用的Future。下面是我使用future和callables的主要代码- public class TimeoutThread { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newFixedThreadPool(5); Future<TestResponse> fut

我在代码中使用Java可调用的Future。下面是我使用future和callables的主要代码-

public class TimeoutThread {

    public static void main(String[] args) throws Exception {

        ExecutorService executor = Executors.newFixedThreadPool(5);
        Future<TestResponse> future = executor.submit(new Task());

        try {
            System.out.println(future.get(3, TimeUnit.SECONDS));
        } catch (TimeoutException e) {

        }

        executor.shutdownNow();
    }
}
下面是我使用future和callables的主要代码-

public class TimeoutThread {

    public static void main(String[] args) throws Exception {

        ExecutorService executor = Executors.newFixedThreadPool(5);
        Future<TestResponse> future = executor.submit(new Task());

        try {
            System.out.println(future.get(3, TimeUnit.SECONDS));
        } catch (TimeoutException e) {

        }

        executor.shutdownNow();
    }
}

所以我的问题是我应该如何在这里声明GSON?它应该在我的任务类中声明为静态最终全局变量吗?Bcoz目前我正在使用gson解析JSON,对于我所做的每一个调用
new gson()
,它是否昂贵?

从多个线程使用
gson
对象是明确安全的,因为它不保留任何内部状态,所以是的,声明一个
私有静态final gson=new gson(),甚至将其公开


请注意,如果希望客户端代码能够通过使用
GsonBuilder
自定义呈现,则应接受
Gson
对象作为参数。

Gson库可以在类级别定义并在任何地方使用,因为它不会在不同的调用中维护状态。因为它不维护状态,所以可以声明一次并在任何地方使用它(如果需要重用它,只需少编写一行代码)。多线程将不会对其产生影响。
另一方面,从官方文档中查看它的性能指标,这似乎不是一个昂贵的要求。

+1:这里是关于在json操作期间不维护任何状态的官方说法@chrylis:你能解释一下你的第二点吗?因为我以前没有使用过它,所以我不知道这一点。或者,如果您可以提供一个例子,那么它将非常有帮助。您可以从Gson配置JSON输出。您可以使用
GsonBuilder
来执行此操作。查看文档中的示例。请参阅