java的 violate 和 synchronize

2023-11-13

volatile 意思是说这个变量,不必用本地副本优化,保证所有线程直接操作主存中的变量,是真正共享的。

volatile讲的是可见性,跟原子操作、线程安全无关。


synchronized 常常被强调的意思是互斥,保证只有一个线程进入。其实它还有保证可见性的含义,即,后进入的线程一定会看到之前进入的线程的更新结果。假如没有synchronized,即便被赋值的变量只是一个int, 是原子操作,(即第二个线程要么读到更新之前的值,要么读到更新之后的值,不会读到某种中间状态), 其实还有可见性的问题,即之后的线程可能读还是旧值,从应用逻辑上是有问题的。为什么允许这样, 因为既然你没有说同步,那各个线程就是完全独立的各行其是。


所以synchronized有两层含义

1)执行期间的独占,保证代码块执行期间别的线程不打扰,这样保证数据的完整性,

2)执行后的可见。保证后进入的线程可以看到之前线程的结果。


可见性,原子性是两个不同的问题。

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

java的 violate 和 synchronize 的相关文章

  • Python与Stata在数据处理上的区别

    转自 微点阅读 https www weidianyuedu com 本节旨在演示如何在 pandas 中做各种类似Stata的操作 按照惯例 我们按如下方式导入 pandas 和 NumPy 计量经济学服务中心import pandas
  • iterable java_如何在Java中将Iterable转换为Collection?

    iterable java There are various ways to convert Iterable to Collection in Java programming language 有多种方法可以用Java编程语言将Ite
  • 定时开机电路设计

    在一些情况下 比如电池供电 需要定时采集数据并传输 并且对功耗要求比较高时 就需要电路实现采集完成后关机 且能够定时自动启动的功能 一种方法是 采集完成后 通过单片机关闭外围电路的电源 且单片机本身处于低功耗模式 只保留RTC工作 设置定时
  • “千年虫”,计算机的巨大BUG!

    作者 十三侃娱乐 说起来 现在社会科技中 除了真正学过计算机专业的人 大部分人对于 千年虫 这个称号都有些陌生 甚至有些人连听都没听过 不知道的网友听到 虫 这个字可能还会脑补出一大堆不明生物的样子 但其实 千年虫 并不是一种生物 而是一种
  • 量化涌现:信息论方法识别多变量数据中的因果涌现

    来源 集智俱乐部 作者 Fernando E Rosas Pedro A M Mediano Henrik J Jensen等 译者 潘佳栋 审校 梁金 编辑 邓一雪 导语 大量个体聚集起来 常常涌现出新的复杂结构 鸟儿聚集起来形成兼具灵活
  • 为什么程序员都喜欢安静?

    大家回顾一下上学期间 你在上晚自习想完成今天老师布置的作业 但是你的班级却非常的吵闹 跟置身在菜市场一样 你能专心完成作业吗 不受周围吵闹环境的影响吗 相信大部分的人都难以静下心来认真完成作业 有时候好不容易想到一个思路 结果旁边的人拍你一
  • 利用hbase api在本地访问并操作服务器的hbase数据库

    最近因为实验室项目需要 开始研究了hbase 然后想一次性往集群服务器上写入大量的数据 并存到hbase中 考虑到在hbase shell下只能单个数据put 这样对于批量插入数据的要求完全不合适 于是就研究起hbase的java api
  • [学习笔记]Matlab(持续更新)

    文章目录 一 Matlab知识学习 1 输入输出语句 注意 Matlab中disp fprintf及sprintf三者之间的区别 2 exist函数的使用 3 matlab中的注释 4 几种常用的清除命令 5 MAT文件如何操作 6 dir
  • 拼多多招收java开发的三轮面试题,你能撑到第几轮?

    我相信 面试一直是大家关注的问题 包括最近有很多刚毕业或者刚实习的小伙伴跟我讲投了很多简历出去 但却都像泥牛入海一样了无音讯了 确实出于程序员的直觉 今年着实是要比往年要更冷一些 对于面试来说 我相信大家都听过一个说法就是 金九银十 但是现
  • C++基础之纯虚函数

    一 纯虚函数的定义 纯虚函数是一种特殊的虚函数 在许多情况下 在基类中不能对虚函数给出有意义的实现 而把它声明为纯虚函数 它的实现留给该基类的派生类去做 这就是纯虚函数的作用 C 中的纯虚函数 一般在函数名后使用 0作为此类函数的标志 前面
  • Gavin Wood Web3峰会最新演讲:波卡不是智能合约平台,而是平台的平台(全文)...

    在波卡上 每个平台都在用高性能 高效率和最优的方式做着自己擅长的事 而不必让它们的用户用底层平台的货币进行支付 从而将可定制性和灵活性提高了一个台阶 本文谨代表作者个人观点 不代表火星财经立场 该内容旨在传递更多市场信息 不构成任何投资建议
  • 每日一问:你想如何破坏单例模式?

    前言 1 单例是什么 单例模式 是一种创建型设计模式 目的是保证全局一个类只有一个实例对象 分为懒汉式和饿汉式 所谓懒汉式 类似于懒加载 需要的时候才会触发初始化实例对象 而饿汉式正好相反 项目启动 类加载的时候 就会创建初始化单例对象 1
  • Python中保留两位小数的几种方法

    保留两位小数 并做四舍五入处理 方法一 使用字符串格式化 gt gt gt a 12 345 gt gt gt print 2f a 12 35 gt gt gt 方法二 使用round内置函数 gt gt gt a 12 345 gt g
  • 零基础入门 HTML 的 8 分钟极简教程

    在今天 前端工程师已经成为研发体系中的重要岗位之一 可是与此相对的是 极少大学的计算机专业愿意开设前端课 大部分前端工程师的知识 也都是在实践和工作中不断学习的 最近收到很多同学的后台留言 说希望多推出一些前端方向的教程 今天我们就带来一个
  • 汇编语言(王爽第三版)实验十五

    实验十五 题目与个人思路 安装一个新的int 9中断例程 功能 在DOS下 按下 A 键后 除非不再松开 如果松开 就显示满屏幕的 A 其他的键照常处理 我刚刚开始以为还要判断按下 A 键的扫描码 后来发现不用 只要判断松开 A 键的扫描码
  • 去国企1年后,我后悔了!重回大厂内卷

    文章来源 cnblogs com peiyu1988 html 01 前言 2019年初 我通过一整天的笔试及面试加入一家 某一线城市国资委全资控股 某集团的研究机构 中央研究院 任职高级软件工程师 中级职称 在这边工作了整整一年 目前已经
  • 一文带你从IntelliJ IDEA中一键生成Controller、Service、Dao、Model层代码,真的不看看吗?

    前言 EasyCode插件介绍与安装 简介EasyCode是基于IntelliJ IDEA开发的代码生成插件 支持自定义任意模板 Java html js xml 只要是与数据库相关的代码都可以通过自定义模板来生成 支持数据库类型与java
  • python到底值不值得学,自学两年,有话说!!

    首先说说笔者自己 笔者从小就对计算机有浓厚的兴趣 无奈家里穷 买不起 考大学的时候又阴差阳错的进了文科专业 高大上的工商管理专业 第一台计算机 还是大二的时候花了600买的二手货 海尔品牌机 赛扬466cpu 那时候主流的cpu奔腾500
  • 送书|入门Python之后还是搞不定面试、做不来项目,推荐读读这本书

    又到了每周三送书的时刻啦 本周送书 Python工匠 Python 能干的事情实在太多了 掰着指头数有点不够用 Web 开发 数据分析 网络爬虫 自动化运维 后台开发 机器学习 如果你知道主攻哪个方向 只需重点去学习 不过 不论哪个方向 P
  • C++ 智能指针详解

    点击蓝字 关注我们 参考资料 C Primer中文版 第五版 我们知道除了静态内存和栈内存外 每个程序还有一个内存池 这部分内存被称为自由空间或者堆 程序用堆来存储动态分配的对象即那些在程序运行时分配的对象 当动态对象不再使用时 我们的代码

随机推荐

  • 前端面试题---框架篇

    Vue面试题 面试题 Vue2 x 生命周期有哪些 Vue生命周期总共可以分为8个阶段 创建前后 载入前后 更新前后 销毁前销毁后 以及一些特殊场景的生命周期 面试题 第一次进入组件或者页面 会执行哪些生命周期 beforeCreate c
  • 7.20黄金涨势是否会延续?今日如何布局

    近期有哪些消息面影响黄金走势 今日黄金多空该如何研判 黄金消息面解析 国际金价周四 7月20日 徘徊在1984美元 盎司附近 投资者继续押注近期公布的美国经济数据让美联储有理由暂停加息 金价上个交易日触及的5月24日以来新高1985 25美
  • python爬取支付宝基金数据_钱袋子往哪走?教你用Python爬取基金数据

    年关将至 钱袋子往哪走 有人买了定期存款 3年 年利率 3 987 按存50w计算 0 0385 50万 3年息 6万 月息 1666 72元0 039785 50万 3年息 6 21万 月息 1724 53元0 04125 50万 3年息
  • 跳跃游戏(两种详细解答)

    第一种 从前开始 class Solution public boolean canJump int nums 定义reach为能够到达的最远距离 int reach 0 for int i 0 i lt reach i temp表示在下标
  • java调用微信支付接口

    https github com binarywang weixin java pay demo pox xml引入依赖
  • 为何AI无法完全理解人类情感?GPT-4能否理解人类的情绪?

    在科幻小说和电影里 我们经常看到超级AI人工智能机器人可以理解 感知甚至模拟人类的情感 但在现实世界中 我们距离这个目标还有一段相当长的距离 即使是强大的GPT 4甚至未来的GPT 5 过高夸大AI的体验和性能 往往并不利于科技的发展 元宇
  • 华为OD流程走完了

    我机试题地址 传送门 huaweiOD机试题 机试过了后 华为上海部HR一面 耗时30分钟左右 问了些家庭 个人工作经历 包括结婚否 为什么辞职之类的 技术二面 同样 自我介绍结束后 问了些项目相关的细节 该环节完后 面试官共享其试题 限时
  • 猿创征文 |万字长文搞定企业中的mysql数据库部署及使用

    文章目录 Mysql 二进制安装及mycat 读写分离 1 学习环境 2 初始化环境 2 1 关闭selinux 防火墙 2 2 修改主机名 2 3 配置域名解析 2 4 时间同步 3 mysql 安装 3 1 二进制包上传服务器 3 2
  • winCE中实现虚拟串口的方法

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 环境 wince6 0 ARM Freescell 一 目的 设计一个读GPS串口数据的驱动 并注册为COM口 二 实现过程 1 COM
  • CSS文字居中对齐学习

    CSS使用text align属性设置文字对齐方式 text align center 这样就设置了文字居中对齐
  • MDK编译生成的HEX、map与htm文件分析

    MDK编译生成的HEX map与htm文件分析 hex文件 Intel HEX文件是记录文本行的ASCII文本文件 在Intel HEX文件中 每一行是一个HEX记录 由十六进制数组成的机器码或者数据常量 Intel HEX文件经常被用于将
  • TCP报文段

    文章目录 什么是TCP TCP报文段 源端口号 目标端口号 序列号 Sequence number 确认号ack 数据偏移 首部长度 保留 8个标志 核心 窗口大小 校验和 可选项 填充 什么是TCP TCP是面向连接的 可靠的 基于字节流
  • Linux常用语法

    文章目录 第一章 Linux概述 第二章 Linux常用命令 第一讲 进入某个路径 第二讲 查看日志 VI 查看静态日志 tail watch 实时日志 tail 搭配使用参数 查看日志目标行 导出日志 查看当前路径下文件 按文件名查找文件
  • STM32定时器输入捕获

    STM32定时器输入捕获 用STM32F429做定时器捕获PWM波形 测出波形的周期 频率以及占空比 正向脉宽 基本原理 定时器的输入捕获主要是为了测量输入信号的频率 脉宽 占空比等信息 需要理解stm32定时器的基本结构 主要理解这些框起
  • object-c 入门基础篇

    大部分有一点其他平台开发基础的初学者看到XCode 第一感想是磨拳擦掌 看到Interface Builder之后 第一感想是跃跃欲试 而看到Objective C的语法 第一感想就变成就望而却步了 好吧 我是在说我自己 如果你和我一样 对
  • 关于char ** 如何赋值

    前段时间遇到了个问题 需要返回二维字符串数组 每行单独输出字符串 正常思路利用两个for循环挨个对每个字符进行赋值 如下 for int i 0 i lt x i for int j 0 j lt y j char i j 毕竟用两个for
  • Oracle复制行记录到同一个表(两种写法)

    Oracle复制行记录到同一个表 两种写法 通过循环 判断记录是否存在 不存在时插入数据 插入数据时 可以更新插入数据指定字段的值 请根据实际项目需要改写SQL DECLARE CURSOR dept cursor IS SELECT FR
  • C++杨辉三角(初学)

    01 C 的 杨辉三角之 第一个版本 就是最基础的 输入行数 输出打印的图形 话不多说 代码如下 include
  • Latex 特殊章节符号 (§)

    latex 的 tex 文件中 要引用的部分 S ref l 其中 S 大写 对应 l为要引用的章节对应的标签 即要引用的章节 section XXXX label l
  • java的 violate 和 synchronize

    volatile 意思是说这个变量 不必用本地副本优化 保证所有线程直接操作主存中的变量 是真正共享的 volatile讲的是可见性 跟原子操作 线程安全无关 synchronized 常常被强调的意思是互斥 保证只有一个线程进入 其实它还