Java 是否应将GSON声明为静态最终版本?
我在代码中使用Java可调用的Future。下面是我使用future和callables的主要代码-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
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
来执行此操作。查看文档中的示例。请参阅