多线程并发编程笔记07(小滴课堂)容器

news/2025/2/15 4:42:41/

同步容器

我们写这样一段代码。

我们想对vector容器在遍历时,去根据条件删除:

 

 会出现异常。

那正确的方式应该如何去写呢,这里就涉及到了迭代器:

 

单线程中我们是这么做的。

那么多线程中呢?

 

 

有的时候它会报这个错误,意思是说有时候第一个线程删除了demo2,第二个线程可能会找不到这个元素。

那我们要如何正确运行呢?
 

我们在迭代器中去加synchronized关键字就可以了。

 

我们也可以使用collection类给我们提供的线程安全集合方法。

并发容器:

 这里我们主要以CopyOnWrite为例:

 在并发容器中直接使用这种方式是可以的。

那如果我们在并发容器里使用迭代器呢?

但是并发容器中,我们使用迭代器进行删除就会给我们报出错误。

 那这里我们可以思考下在之前同步容器中,多线程下使用for循环遍历根据条件删除会报错,那在并发容器中这种做法还会报错么?

在并发容器中不会报错。

 

 


http://www.ppmy.cn/news/46484.html

相关文章

通达信欧奈尔RPS指标公式编写和设置方法(完全版)

通达信欧奈尔RPS指标公式的编写和设置较为复杂,对于初学者来说可能具有一定挑战性。在编写口袋支点公式时,需要使用RPS指标公式作为基础条件,因此有必要先了解其编写和设置方法。 一、上市一年以上选股 首先选出上市一年以上的股票&#xff…

代码随想录_二叉树_leetcode700、98

leetcode700.二叉搜索树中的搜索 700. 二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入&…

new/delete内存分配操作符

目录 一、C/C的内存分布 二、new与delete操作符 1.new/delete 的使用 2.new申请失败抛异常 3.new/delete操作内置类型 4.new/delete 操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 1.对于内置类型 2.对于自定义类型 ①new的实现…

你的宝典,软件测试项目实战,金融项目测试点详全(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试要点 软件测试…

做个清醒的程序员之破解内卷漩涡

阅读时长约 12 分钟,共计 2764 个字。 说到“内卷”,这个近几年很流行的词,大家都很熟悉了吧? 如果追根溯源,内卷其实也是一个舶来词,它的英文是“Involution”,即“内卷化”。如果用生动一些…

vue大坑:v-for的key以及props传参不当导致的闭包

为什么props传参在模版中使用没问题&#xff0c;在函数中使用不变化 场景 当我们点击上方的月份时&#xff0c;会改变下方加载的卡片信息 代码&#xff1a; 父组件&#xff1a; <divv-for"(item, index) in vocalStore.getCardMonthData":key"index"…

Verilog | 轮询仲裁

仲裁 当多个源和用户需要共享同一资源时&#xff0c;需要某种仲裁形式&#xff0c;使得所有用户基于一定的规则或算法得到获取或访问共享资源的机会。 仲裁方案 严格优先级轮询 根据优先级的差异&#xff0c;用户访问共享资源的机会也不同。低优先级的用户可能时钟无法得到资…

有哪些功能强大,但是很小众的Python库呢?

Python生态系统中有很多小众但非常强大的库&#xff0c;一般&#xff0c;通俗的规律就是&#xff0c;越是高端&#xff0c;越小众&#xff0c;但是&#xff0c;高端不代表难学&#xff0c;只要理论到了&#xff0c;用起来照样嗖嗖的&#xff0c;以下是一些参考的高端小众库&…