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)

      

      

  • 相关阅读:
    Android Touch事件相关源码【Android SourceCode 2.3.6】
    使用方式比较优雅的代码集合
    Android系统中是否开启定位及定位模式的判断
    Android中软键盘展示、EditText焦点获取及windowSoftInputMode属性探究
    删除rz上传失败乱码的文件
    linux mysql 操作命令
    linux下端口被占用
    linux环境搭建记录
    ibatis 批量插入数据
    jQuery id模糊 选择器 批量处理
  • 原文地址:https://www.cnblogs.com/lzj2008/p/8922455.html
Copyright © 2011-2022 走看看