gpt4 book ai didi

java - 特定代码片段的同步语句

转载 作者:行者123 更新时间:2023-12-03 02:29:51 25 4
gpt4 key购买 nike

我有来自 https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html 的以下代码片段

public void addName(String name) {
synchronized(this) {
lastName = name;
nameCount++;
}
nameList.add(name);
}
  1. 我认为 nameList.add(name); 也需要位于同步块(synchronized block)中,因为 nameList 内容也应该像 Collections.synchronizedList(List) 一样是发生之前的关系。

对此有什么想法吗?

  • 它还说
  • Without synchronized statements, there would have to be a separate, unsynchronized method for the sole purpose of invoking nameList.add.

    我不明白这句话为什么如果没有同步语句,nameList.add应该在单独的非同步方法中。

    最佳答案

    通过这个示例,他们试图展示如何部分同步方法,特别是涉及 lastNamenameCount 的代码。阅读本文:

    In this example, the addName method needs to synchronize changes to lastName and nameCount

    因此,也许 nameList 已经同步,或者对其的更改不需要与 lastNamenameCount 变量的更改同步。因此,它被排除在同步块(synchronized block)之外。

    关于java - 特定代码片段的同步语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195956/

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