作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 JSON-java 库 ( org.json.JSONArray ) 中,我发现这段代码片段在方法局部变量周围有一个 synchronized
block
public String toString(int indentFactor) throws JSONException {
StringWriter sw = new StringWriter();
synchronized (sw.getBuffer()) {
return this.write(sw, indentFactor, 0).toString();
}
}
我不明白这里同步的必要性,因为 StringWriter
只是给定方法的本地(以及为什么同步在 Buffer 上)。这里真的需要同步吗?如果是,为什么?
最佳答案
这可能是性能优化。在 oracle jvm 中,重新获取一个已经持有的锁是非常快的。据推测,write
调用正在对 StringBuffer 进行多次调用。通过在调用 write
之前锁定,锁将在所有这些调用中保持,而不是在每次调用时释放并重新获取。
关于java - 局部变量同步的必要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318203/
所以我有这个棋盘,可以玩棋盘游戏...问题是,我怎么知道用户点击了哪个方 block ?我知道 x 和 y 坐标,但我该如何自动化它,而不需要寻找每个方 block 的具体位置。 (而且棋盘的大小是可
我是一名优秀的程序员,十分优秀!