import java.util.*;
/** * @description: HashSet线程不安全的代码示例 * @author: xz */
public class ContainerNotSafe {
public static void main(String[] args) {
Set<String> set=new HashSet<>();
//模拟30个线程,往HashSet集合中添加数据
for(int i=1;i<=30;i++){
new Thread(()->{
set.add(UUID.randomUUID().toString().substring(0,8));
System.out.println(set);
}).start();
}
}
}
import java.util.*;
/** * @description: 通过Collections工具类解决集合类HashSet线程不安全问题 * @author: xz */
public class ContainerNotSafe {
public static void main(String[] args) {
Set<String> set=Collections.synchronizedSet(new HashSet<>());
//模拟30个线程,往synchronizedSet集合中添加数据
for(int i=1;i<=30;i++){
new Thread(()->{
set.add(UUID.randomUUID().toString().substring(0,8));
System.out.println(set);
}).start();
}
}
}
import java.util.*;
import java.util.concurrent.CopyOnWriteArraySet;
/** * @description: 通过JUC包下的写时复制集合类解决HashSet线程不安全问题 * @author: xz */
public class ContainerNotSafe {
public static void main(String[] args) {
Set<String> set=new CopyOnWriteArraySet<>();
//模拟30个线程,往CopyOnWriteArraySet集合中添加数据
for(int i=1;i<=30;i++){
new Thread(()->{
set.add(UUID.randomUUID().toString().substring(0,8));
System.out.println(set);
}).start();
}
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://wwwxz.blog.csdn.net/article/details/122443223
内容来源于网络,如有侵权,请联系作者删除!