gpt4 book ai didi

java - 局部变量同步的必要性

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:10 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com