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.总结

    我不喜欢这个世界,我喜欢你
  • 相关阅读:
    2021年4月1日
    2021年3月31日
    2021年3月30日
    2021年3月29日
    2021年3月27日
    2021年3月26日
    2021年3月25日
    人件集阅读笔记03
    2020年3月24日
    构建之法阅读笔记02
  • 原文地址:https://www.cnblogs.com/truekai/p/10859503.html
Copyright © 2011-2022 走看看