zoukankan      html  css  js  c++  java
  • 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)

      

      

  • 相关阅读:
    个人技术博客(α)
    git常用命令合集
    软件工程实践2017第二次结对作业
    软件工程实践2017第一次结对作业
    软件工程实践2017第二次作业
    软件工程实践2017第一次作业
    学习总结
    约瑟夫
    今天是星期几
    斐波那契数列取石子游戏
  • 原文地址:https://www.cnblogs.com/lzj2008/p/8922455.html
Copyright © 2011-2022 走看看