但是Synchronized虽然确保了线程的安全,但是在性能上却不是最优的,Synchronized关键字会让没有得到锁资源的线程进入BLOCKED状态,而后在争夺到锁资源后恢复为RUNNABLE状态,这个过程中涉及到操作系统用户模式和内核模式的转换,代价比较高。

尽管Java1.6为Synchronized做了优化,增加了从偏向锁到轻量级锁再到重量级锁的过度,但是在最终转变为重量级锁之后,性能仍然较低。

所谓原子操作类,指的是java.util.concurrent.atomic包下,一系列以Atomic开头的包装类。例如AtomicBooleanAtomicIntegerAtomicLong。它们分别用于BooleanIntegerLong类型的原子性操作。

作者:AubreyXue
链接:https://www.jianshu.com/p/ae25eb3cfb5d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

乐观锁 CAS 悲观锁synchronized()性能低因为涉及操作系统内核与用户模式的切换相关推荐

  1. 一篇文章带你弄懂乐观锁与悲观锁,CAS原子性,synchronized底层原理

    文中加入了个人理解,如有不准确的地方欢迎提出,笔者会及时的进行改正. 乐观锁与悲观锁 乐观锁: 假设数据不会发生冲突,只有在进行数据更新的才会对数据进行检查,如果冲突则更新失败并返回错误信息 悲观锁: ...

  2. 悲观锁和乐观锁_乐观锁和悲观锁 以及 乐观锁的一种实现方式-CAS

    悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞知道它拿到锁.传统的关系型数据库里面就用到了很多的这种锁机制,比如行锁,表锁等 ...

  3. 乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

    首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁.传统的关系型数据库里边就用到了很 ...

  4. 详解各种锁:CAS、共享锁、排它锁、互斥锁、悲观锁、乐观锁、行级锁、表级锁、页级锁、死锁、JAVA对CAS的支持、ABA问题、AQS原理

    共享锁(S锁) 又称为读锁,可以查看但无法修改和删除的一种数据锁.如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁.获准共享锁的事务只能读数据,不能修改数据. 共享锁下其它用 ...

  5. Java并发 乐观锁和悲观锁 乐观锁的一种实现方式CAS

    为什么80%的码农都做不了架构师?>>>    首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人 ...

  6. Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

    Java并发问题–乐观锁与悲观锁以及乐观锁的一种实现方式-CAS </h1><div class="clear"></div><div c ...

  7. java学习系列2(并发锁问题-乐观锁与悲观锁以及乐观锁的一种实现方式-CAS)

    Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS 首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别 ...

  8. 并发编程中常见的锁机制:乐观锁、悲观锁、CAS、自旋锁、互斥锁、读写锁

    文章目录 乐观锁 VS 悲观锁 悲观锁 乐观锁 CAS CAS机制 ABA问题 CAS的优缺点 互斥锁 VS 自旋锁 互斥锁 自旋锁 对比及应用场景 读写锁 实现方式 读写锁 VS 互斥锁 乐观锁 V ...

  9. 【java】乐观锁和悲观锁、CAS和ABA问题

    一.乐观锁VS悲观锁 1)关于悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,Java中synchronized和ReentrantLock以及Read ...

最新文章

  1. HTTP 毛病 401.1 - 未经授权:接见因为凭证无效被谢绝
  2. 架构师之路(1)---面向过程和面向对象
  3. 在cmd命令行下编译运行C/C++源文件
  4. Teleport Ultra 抓包工具
  5. vs code没有代码提示
  6. 【Level 08】U08 Positive Attitude L1 See the world
  7. 【专栏精选】实战:使用LeanCloud上传玩家分数,实现排行榜
  8. 微信密文聊天新方法,很实用!
  9. java点击按钮弹出警告_GUI求教~~~我想点击按钮确定后,弹出一个提示框输入有误!,,…...
  10. Slurm如何管理和使用节点资源
  11. 帧中继的基本配置(Basic FrameRealy)
  12. 单片机 防破解 技术论述
  13. Java温习——基本语法
  14. python允许无止境的循环_A-level Computer Science 计算机科学学习笔记/经验分享/教程 (12.6):PHP...
  15. java 流计算_Java 流收集器 ( Stream Collectors ) ( 一 ) - 统计计算
  16. protobuf java代码生成及实例
  17. 网上打印文件怎么发给商家?怎么给商家发送打印资料
  18. 电容的工作原理、分类选择与应用
  19. NEO4J分析《权力的游戏》人物领土等关系
  20. 《微观经济学》 第三章

热门文章

  1. html大文件占用内存,[Flutter] 大文件上传之随传随处理(避免占用大量内存)
  2. java ee核心框架实战 pdf_Java EE核心框架实战 高洪岩 中文PDF
  3. ansible自动化运维(二)——环境部署及常用模块的使用
  4. 网络服务-DNS 域名系统服务
  5. c++ class struct同名_第二课C到C++的关系
  6. python雷达图数据_PYTHON绘制雷达图代码实例
  7. jeesite如何已生成数据的数据源_使用Jeesite进行二次开发
  8. mysql is复制表结构_MySQL复制表结构和内容到另一张表中的SQL语句
  9. springcloud demo---feign
  10. Git的学习与使用(一)——Git 与 SVN 区别