gpt4 book ai didi

java - 同步到要实例化的对象

转载 作者:行者123 更新时间:2023-11-29 10:06:13 26 4
gpt4 key购买 nike

此代码是否存在任何同步/引用问题?

(假设 myStrings 已经实例化。)

MySynch.java:

public class MySynch
{
public static String[] myStrings = new String[10];

public static void updateStrings()
{
synchronized (myStrings)
{
myStrings = new String[10]; // Safe?

myStrings[0] = something[0];
myStrings[1] = somethingElse[4];
}
}
}

对象数组 myStrings 可以被多个线程读取,并且有一个线程通过运行 updateStrings() 来更新(写入)它。从中读取的线程也将使用 synchronized (myStrings) block 从中读取,当然,为了安全。

锁定数组并在内部锁定它的synchronized block 再次实例化它是否有问题(如上所述)?

最佳答案

存在一个同步问题:当 myStrings 被设置为一个新实例时,第二个线程正在执行紧接着的方法,第二个线程将同步 myStrings 的第二个实例。

您应该在类或任何其他静态最终对象上同步

synchronized(MySynch.class) {
...
}

关于java - 同步到要实例化的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7517082/

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