首页 > 其他分享 >多线程环境下安全的集合

多线程环境下安全的集合

时间:2022-09-27 14:00:19浏览次数:56  
标签:String list 安全 集合 new 多线程 public

多线程环境下安全的集合

List

/**
 * 并发修改异常  多个线程同时操作一个不安全的集合
 * <p>
 * CopyOnWriteArrayList 写时复制技术
 * add方法会先复制一个新数组 对新数组进行相关操作  操作完成之后合并到原数组去  独立写
 */
public class Demo01 {

    public static void main(String[] args) {

        //List list = new ArrayList(); //不安全
        //List<String> list = new Vector<>(); //安全
        //List<String> list = Collections.synchronizedList(new ArrayList<>()); //安全
         List<String> list = new CopyOnWriteArrayList<>();//安全

        for (int i = 0; i < 20; i++) {
            new Thread(() -> {
                list.add(UUID.randomUUID().toString().substring(0, 8));
                System.out.println(list);
            }, String.valueOf(i)).start();
        }
    }

}

Set

/**
 * set 集合   多线程安全解决
 */
public class Demo02 {

    public static void main(String[] args) {

        //Set<String> set = new HashSet<>();//不安全
        Set<String> set = new CopyOnWriteArraySet<>(); //安全

        for (int i = 0; i < 20; i++) {
            new Thread(() -> {
                set.add(UUID.randomUUID().toString().substring(0, 8));
                System.out.println(set);
            }, String.valueOf(i)).start();
        }

    }

}

Map

/**
 * map 集合 多线程环境安全解决方案
 */
public class Demo03 {

    public static void main(String[] args) {

        //Map<String, String> map = new HashMap<>();
        Map<String, String> map = new ConcurrentHashMap<>();
        for (int i = 0; i < 20; i++) {
            String key = String.valueOf(i);
            new Thread(() -> {
                map.put(key,UUID.randomUUID().toString().substring(0, 8));
                System.out.println(map);
            }, String.valueOf(i)).start();
        }

    }
    
}

标签:String,list,安全,集合,new,多线程,public
From: https://www.cnblogs.com/yishan99/p/16734324.html

相关文章

  • 常用的函数式接口_Predicate接口_默认方法or&negate和常用的函数式接口_Predicate接口
    常用的函数式接口_Predicate接口_默认方法or&negate:需求:判断一个字符串长度是否大于5如果字符串的长度大于5,那么返回false如果字符串的长度不大于5,那么返回true所以我......
  • 学习:网络基础知识 https安全性总结,http和https对比
    加密----秘钥;身份认证----证书(申请)==双向认证;完整性保护----哈希算法--计算一个hash值验证消息的完整性,对比客户端发来的摘要信息来对比自身计算的摘要信息保证数据没......
  • 【安全测试】nmap使用手册
    端口扫描安全测试步骤:1.登录服务器:10.82.x.x(找运维申请权限)2.输入nmap查看是否可用3.跳转执行下面2.3生成报告中的命令即可一、windows使用在启动栏搜索zenmapGUI......
  • 【安全测试】nmap安装
    1.下载安装软件2.双击exe执行安装,下一步傻瓜式安装即可 3.安装完成后在启动栏搜索zenmapGUI即可进入图形化界面进行扫描也可以进入cmd,输入nmap命令行进行扫描 Tr......
  • 企业安全防护管理提案范文案例
    提案书提案目的本公司以“生产必须安全,安全为生产”为方针,全方位实施安全管理。为了加强本公司的安全防范工作,保护员工人身安全和公司财产,保障各项工作顺利进行,特引进本......
  • VMWARE虚拟机提示 "您正在运行的此虚拟机已启用侧通道缓解。侧通道缓解可增强安全性,但
    解决办法:虚拟机设置----选项---高级---选中“为启用了hyper-v的主机禁用侧通道缓解”,就可以了。如果hyper-v选项为灰色,无法勾选,则需要把当前虚拟机关机,才能更改。 ......
  • python 集合
    集合(set)是一个无序、可变、不允许数据重复的容器。1.定义s={11,22,33}无序,无法通过索引取值可变,可以添加和删除元素不允许数据重复用途:如果有一个数据类型......
  • 集合笔记记录
    目录Collection基础概念List1.ArrayList1.1ArrayList的特点:1.2ArrayList构造源码分析:2.LinedList2.1基本介绍2.2LinkedList源码分析2.2.1构造源码2.2.2添加方......
  • 【安全测试】nmap培训
    nmap官网地址:https://nmap.org/nmap扫描脚本:https://nmap.org/nsedoc/ 一、nmap是什么?    Nmap,也就是NetworkMapper,是一个网络连接端扫描软件,用来扫描网上电......
  • C++多线程编程之【线程管理】
    1.如何启动线程?构建std::thread对象即可。直接传函数名(地址)创建一个类并创建伪函数。构建对象(实例化),将对象作为参数传入thread对象实例化。2.为什么要等待线程?首先......