zoukankan      html  css  js  c++  java
  • 线程安全之原子性

    说明:此片博文理解尚浅,后期会逐步修改。

    0.概要

      首先介绍了原子性的概念,然后分别展示了Java中实现原子性的三种方法:Atonic包、synchronized,Lock,最后对三种方式实现做了简单的比较。

    1.原子性

      提供互斥访问,指的是同一个时刻只能由一个线程来进行操作。

    2.原子性之Atomic包 

      1)CAS(使用了Unsafe.CompareAndSwapxxx方法),这个方法:会通过一个do.while循环来判断工作内存(当前)中的值和主内存(底层)中的值是否一致,直到一致才执行相应的操作。

    3.原子性之锁

      JDK提供两种锁,一种是synchronized,是Java关键字,依赖JVM去实现锁,那么其在作用对象的作用范围内,同时只有一个线程能进行操作。

      其修饰的对象有如下四种:

      1)修饰代码块:大括号括起来的部分,作用于调用对象

      2)修饰方法:整个方法,作用于调用的对象

      3)修饰静态方法:整个静态方法,作用于所有对象

      4)修饰类:作用于所有对象

    4.原子性对比

    synchronized 不可中断锁,适合线程竞争不激烈,可持续性好
    Atomic 竞争激烈时候能维持常态,但只能同步一个值

    5.总结

    我不喜欢这个世界,我喜欢你
  • 相关阅读:
    07: mysql锁和事物隔离
    06: mysql索引查找原理及调优
    06: 字典、顺序表、列表、hash树 实现原理
    05:树结构
    02:MongoDB操作
    01:MongoDB基础
    02: CMDB设计思路
    二级制包安装Tomcat 与 RPM包安装Tomcat
    Docker的volume机制实现容器数据的持久性存储
    配置docker的私有仓库
  • 原文地址:https://www.cnblogs.com/truekai/p/10859503.html
Copyright © 2011-2022 走看看