cuốn sách gpt4 ai đã làm

java - "inconsistent synchronization"是什么意思?

In lại Tác giả: Taklimakan 更新时间:2023-11-03 04:00:33 25 4
mua khóa gpt4 Nike

这是我的 Java 1.6 类:

public class Foo {
private ArrayList names;
public void scan() {
if (names == null) {
được đồng bộ hóa (cái này) {
this.names = new ArrayList();
// fill the array with data
}
}
}
}

Findbugs 说:

Inconsistent synchronization of com.XXX.Foo.names; locked 40% of time

这是什么意思,我做错了什么?当两个或多个客户端同时调用 Foo.scan() 时,我试图避免出现问题。

câu trả lời hay nhất

这是因为您只在设置 names 变量时进行同步,而不是在读取它时进行同步。因此,在读取和写入之间可以执行另一个线程,您将创建两个 ArrayList 并用数据填充它们,创建的第一个将进行 GC。

您需要将 synchronized block 放在读取和写入周围,或者在方法中添加 synchronized 修饰符。

public class Foo {
private ArrayList names;
public void scan() {
được đồng bộ hóa (cái này)
if (names == null) {
this.names = new ArrayList();
// fill the array with data
}
}
}
}

关于java - "inconsistent synchronization"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187286/

25 4 0
Bài viết khuyến nghị: java - 使用 PrimeFaces 动态生成标签
Bài viết khuyến nghị: algorithm - 正整数和负整数的子集和
Bài viết khuyến nghị: algorithm - 具有不同约束的网络流
Bài viết khuyến nghị: java - 导入 javax.vecmath
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress