我得到:singleton类在springboot代码的4-5个位置以不同步的方式写入一个字段,同时扫描sonarqube。现在,我正在努力理解如何才能让这个警告消失?这个错误有一般的解决方法吗
一个例子如下:
public class NewProvProcess {
@Autowired
DataExecutor dataexecutor;
String flag = "N";
public void dbFetchNewProvRecords() {
do {
try {
Thread.sleep(180000);
flag = dataexecutor.fetchNDBRunStatus();
LOGGER.info("The Flag value is {}, checking again after 3 minute ", flag);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}while(("N").equals(flag));
}
}
1条答案
按热度按时间prdp8dxp1#
永远不要直接公开一个可变的字段,尤其是如果有可能其他线程可能需要访问它-使它私有。
同步对字段的所有访问。
在最简单的情况下,这样做可能会: