我正在考虑在我的项目中使用 Gson。在审查其功能时,出现了有关其并发处理的问题。
Gson在实现过程中如何处理潜在的并发问题?如果多个线程使用 getter 或 setter 访问相同的功能,这会导致问题吗?或者这个问题在图书馆的其他地方得到解决?
我引用的文件列在下面
NonNullElementWrapperList.java
我手动查看了该文件,但不知道其应用在哪里。另外不知道目前在哪里处理这个问题。
我手动查看该文件,但不知道其应用在哪里
NonNullElementWrapperList
是方法 JsonArray.asList()
使用的内部类。无法保证它是否是线程安全的。
一般来说,您应该考虑所有 Gson 类和方法都不是线程安全的,除非它们的文档明确这么说。
Gson
类是线程安全的:
Gson 实例是线程安全的,因此您可以跨多个线程自由地重用它们。
对于
TypeAdapter
、JsonSerializer
和 JsonDeserializer
,文档建议实现应该是线程安全的,但 Gson 无法强制自定义用户定义的实现遵守这一点。