• JAVA--并发的线程安全处理(二)--如何安全发布对象


    发布安全的对象,能使对象多线程的情况下,是安全的,不被破坏的。

    所以在保证线程安全性的情况下,必须围绕这如何发布安全对象。

    以下主要有三种方式能正确发布一个线程安全的对象

    • 安全对象的常用发布方式
    1. 静态方法初始化一个对象的引用
    2. 将对象引用保存到volatile类型或者AtomicReference对象中
    3. 声明为final类型
    4. 将对象的引用保存在线程安全的容器中(保存在一个由锁保护的域中)
    • 不可变对象

      不可变对象需要满足以下条件

    1. 对象创建以后其状态不能修改
    2. 对象所有域都是final类型
    3. 对象是正确创建的(this引用没有逸出)
    • 线程封闭

      常使用的有堆栈封闭ThreadLocal线程封闭、Ad-hoc线程封闭等。

      堆栈封闭:局部变量,无并发问题。

      ThreadLocal线程封闭:推荐使用的封闭方法

      Ad-hoc线程封闭:程序控制实现,可忽略。

      

      堆栈封闭:在java运行时内存区中有一个虚拟机栈,栈封闭说的就是这个栈,这个栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述描述的是java方法执行的内存模型:每个方法被执行的时候会同时创建一个栈帧用于存储局部变量、操作数栈等。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中的从入栈到出栈的过程。(引用于https://blog.csdn.net/andy_gx/article/details/43387675?utm_source=tuicool)

      

      

  • 相关阅读:
    zookeeper单机环境搭建
    js中获取url?后面的参数值
    【转】java 、javaw、javaws命令的区别
    【转】解决 linux和widows双系统时差8个小时问题
    IntrospectorCleanupListener作用
    Linux 网络相关命令
    SAS:提取数据集观测,宏参数
    sas share
    SAS:多个LOG的批量查询
    SAS:日期,字符数值转换
  • 原文地址:https://www.cnblogs.com/lzj2008/p/8922455.html
Copyright © 2020-2023  润新知