public class HashCodeImpl {
public static Set<String> nameSet;
@Override
public void test() {
nameSet = new HashSet<String>();
List<Student> list = repository.findAll();
if (!CollectionUtil.isEmpty(list)) {
for (Student stu : list) {
nameSet.add(stu.getName);
}
}
}
上面标红代码行应该改为如下所示,每次刷新后把结果集合nameSet赋给nameSet 内存地址不变;
否则每次都去new一个新的对象,会出现并发问题
@Override
public void test() {
Set<String> tempSet = new HashSet<String>();
List<Student> list = repository.findAll();
if (!CollectionUtil.isEmpty(list)) {
for (Student stu : list) {
tempSet.add(stu.getName);
}
}
nameSet = tempSet;
}
}
public class Test {
@Test
public void testHashCode(){
HashSet<String> set= HashCodeImpl.nameSet;
}
}
内存地址问题总结
最新推荐文章于 2021-07-21 16:13:23 发布