Vector非线程安全

2023-11-18

Vector的方法加了同步锁,但对于复合操作未加锁,是非线程安全的。如经典的put-if-absent。线程的安全性包括线程的可见性、有序性、原子性。
if (!vector.contains(element))
    vector.add(element);
}
在contains和add之间有时间间隔,可能导致执行add时,其他线程已经add过,基于错误假设add,导致非线程安全。
vector需对符合操作加锁,如:
  public  boolean putIfAbsent(E x) {
synchronized(v) {
            boolean absent = !contains(x);
            if (absent) {
                add(x);
            }
        }
        return absent;
    }
    
Vector和ArrayList都是实现了List接口,但Vector非线程安全,而且采用同步锁,强阻塞,影响性能,不推荐使用,应该废弃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vector非线程安全 的相关文章

随机推荐

  • 海康摄像头以GB28181国标协议接入国标流媒体服务器流断码问题的解决办法

    随着安防行业的规范化 GB28181协议被作为中国安防行业标准应用在各个领域 尤其在交警 公安等政府相关工程应用甚是广泛 但是由于GB28181协议的兴起在最近几年 导致很多大型厂家各自有各自的私自标准 从而导致各个平台之间对接会出现很多的
  • Git常见问题及报错

    1 解决git clone报错Peer s Certificate has expired的问题 以往在学习一些github上的开源项目时 都是直接复制了项目的地址 然后在主机上git clone一下即可 然而最近发现总是报错 报错内容如下
  • 征途服务器文件,如何使用云服务器架设征途

    如何使用云服务器架设征途 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 Linux云服务器一般采用SSH连接方式 使用密
  • Linux杂项设备驱动

    一 概念 杂项设备是一种特殊的字符设备 在linux2 6之后出现 与platform虚拟总线相关 通常嵌套在 platform 总线驱动中 实现复杂的驱动 其主设备号固定为10 设备注册是用主设备号10来调用register chrdev
  • 嵌入式 OpenSSL 常用函数——Base64编码及解码和证书操作

    Base64编码就是把二进制数据转换为可见的ASCII字符 Base64解码是相反的过程 主要函数 1 Base64编码初始化函数 VoidEVP EncodeInit EVP ENCODE CTX ctx 参数ctx IN 用于保存Bas
  • Knuth 洗牌算法

    核心思想 洗牌算法 Knuth shuffle算法 对于有n个元素的数组来说 为了保证洗牌的公平性 应该要能够等概率的洗出n 种结果 举例解释如下 开始数组中有五个元素 在前五个数中随机选一个数与第五个数进行交换 每个数都有五分之一的概率被
  • 抽签小程序(C语言随机数)

    最近班级里需要人员抽签参加活动 闲来无事用java的 Math random 方法 java util Random 写了一个随机抽签的 所以我又了解了一下C语言的随机数获取 C语言的随机数获取 参考 http c biancheng ne
  • 计算机房选址,数据中心机房如何选址 数据中心机房如何日常维护

    导读 众所周知 数据中心机房建设规范标准给出了数据中心机房的建设要求 包括数据中心机房分级与性能要求 机房位置选择及设备布置 环境要求 建筑与结构 空气调节 电气技术 电磁屏蔽 机房布线 机房监控与安全防范 给水排水 消防的技术要求 众所周
  • MySQL如何查看未提交的事务SQL

    点击上方蓝字关注我 MySQL中经常遇到事务中的SQL正在执行或执行完成后未提交 如何找出对应的SQL 1 查看正在执行的SQL 查看事务中正在执行的SQL方式有多种 例如 1 1 通过processlist查看 会话1 执行1个SQL m
  • Mabot机器人趣味视频教程-变速风扇

    如何从炎热的夏天中解脱 利用Mabot制作一个电风扇或许是个好主意 制作电风扇之前 我们需要提前了解一下电风扇的工作原理 电风扇主要是由一个旋转轴带动扇叶进行旋转 我们可以将五孔梁当做扇叶 Mabot的驱动球可以当做旋转轴 然后加上底座和支
  • awk字符串函数(printf格式化输出) -- shell

    awk有许多强大的字符串函数 gsub r s 在整个 0中 用s代替r gsub r s t 在整个t中 用s代替r 替换字符串 index s t 返回s中字符串t的第一位置 未用过 length s 返回s长度 c语言strlen m
  • 题12:字符串匹配Pabinkarp(上)

    package 字符串问题 public class case12 字符串匹配之Pabinkarp public static void main String args String s ABABABA 源字符串 String p BAB
  • 2022年江苏省大学生电子设计竞赛(TI杯)电赛 B题 无人机 省级一等奖记录 “一个摆烂人的独白”

    前期 从大一进校开始 我就参加了学校的创新实验室 遇到了很多很好的老师 但种种原因吧 实验室断代了 我也算搭草台班子 大一开始就作为实验室负责人 开始负责实验室的各项事务 大一寒假的时候 老师让我在校电赛试试无人机 初生牛犊不怕虎 也不知道
  • 在 Flutter 中实现一个浮动导航栏

    此图与正文无关 只是为了好看 写在前面 这段时间一直在学习 Flutter 在 dribble 上看到一张导航栏设计图 就是下面这张 感觉很是喜欢 于是思考着如何在 Flutter 中实现这个效果 设计图作者 Luk Stra k 经过一番
  • Apollo平台计算框架CyberRT

    Cyber RT 框架 Cyber RT Robotic Technology 是一种基于ROS Robot Operating System 的开发框架 专门设计用于构建高性能 实时性要求较高的机器人应用程序 旨在提供一套可靠 高效 灵活
  • Java并发编程必备:分布式锁的选型和性能对比

    当涉及到分布式系统中的并发控制和数据一致性时 分布式锁是一种常见的解决方案 下面我将对几种常见的分布式锁实现原理 实现示例 应用场景以及优缺点进行详细分析 1 基于数据库的分布式锁 实现原理 基于数据库的分布式锁使用数据库的事务机制和唯一索
  • Vue实现点击复制文本功能

    1 功能 在页面中实现点击复制内容到粘贴板的功能 2 安装clipboard npm install clipboard 3 封装工具类 新建clipboard js 内容如下 import Vue from vue import Clip
  • 嵌入式(标准IO)

    嵌入式自学第十三天 1 Linux IO进程课程目的 学习编写linux应用程序 APP 2 Linux文件的种类 常规文件 目录文件 字符文件 块文件 链接文件 相当于windows快捷方式 3 IO的概念 I input 输入设备 比如
  • 关于Python模块shelve存储的对象,改变字典的值时必须将获取的副本赋给一个临时变量的更好解决方法

    文章的关键点 将函数open的参数writeback设置为True就不需要引用一个临时变量 开始文章的叙述 如何将数据存储到文件中 如果需要的是简单的存储方案 模块shelve可替你完成大部分工作 你只需提供一个文件名即可 对于模块shel
  • Vector非线程安全

    Vector的方法加了同步锁 但对于复合操作未加锁 是非线程安全的 如经典的put if absent 线程的安全性包括线程的可见性 有序性 原子性 if vector contains element vector add element