【发布时间】:2013-08-19 16:02:22
【问题描述】:
在 JSON-java 库 (org.json.JSONArray) 中,我发现此代码 sn-p 带有一个围绕方法局部变量的 synchronized 块
public String toString(int indentFactor) throws JSONException {
StringWriter sw = new StringWriter();
synchronized (sw.getBuffer()) {
return this.write(sw, indentFactor, 0).toString();
}
}
我不明白这里同步的必要性,因为StringWriter 仅对给定方法是本地的(以及为什么同步在缓冲区上)。这里真的需要同步吗?如果,为什么?
【问题讨论】:
-
没有必要。使用默认构造函数,缓冲区是一个新实例化的对象。
buf = new StringBuffer();在构造函数中。 -
请注意,org.json 库的作者是 JavaScript 程序员,而不是 Java 程序员,这一事实在整个代码中都有体现。对于严重的 JSON 处理,请考虑使用 Google 的 Gson 库。
标签: java synchronized