java多线程正确性不一致同步
这有什么问题
public final void setListValid(final List<ValidRes> listValidRes) {
this.listValidRes = listValidRes;
}
声纳对我喊道:
Inconsistent synchronization of xxx.listValidRes; locked 50% of time
有人知道我需要做什么吗
你可以在下面搜索框中键入要查询的问题!
这有什么问题
public final void setListValid(final List<ValidRes> listValidRes) {
this.listValidRes = listValidRes;
}
声纳对我喊道:
Inconsistent synchronization of xxx.listValidRes; locked 50% of time
有人知道我需要做什么吗
# 1 楼答案
问题中给出的代码没有同步。我假设您在代码的其他地方的
this.listValidRes
上进行同步。这正是Sonar告诉你的:如果你在一个资源上进行同步,那么就按照所有的用法进行同步,或者根本不进行同步,让其他人来处理基本上,这是一个设计决策:
您可以选择而不是同步,并让客户机为此烦恼。其优点是,如果不进行同步,速度会明显加快。因此,如果您的类用于单线程设置,则最好放弃同步但是清楚地记录它是而不是线程安全的,否则客户端将使用它多线程并抱怨奇怪的错误
如果选择进行同步(或必须进行同步),则在每次使用关键资源时都进行同步。实现这一点有不同的方法。也许您想显示您实际同步的资源的使用情况。也许我或其他人可以给你一些好的建议