红宝石星球

凡心所向,素履以往;生如逆旅,一苇以航。

  • High一下

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 日程表

  • 站点地图

  • 公益404

  • 搜索

线程不安全——Part-1

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 1,045 字 | 阅读时长 ≈ 5 分钟

概述

线程不安全类:如果一个类的对象同时被多个线程访问,若不做相应的同步或并发处理,容易出现线程不安全的现象,比如:抛出异常、逻辑处理错误等。

阅读全文 »

线程封闭

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 1,038 字 | 阅读时长 ≈ 4 分钟

概述

线程封闭是一种较为简单的线程并发的方法。它其实把对象封装到一个线程里,该对象只对该线程是可见的。当然也就是线程安全的了。

实现线程封闭的方法

  1. Ad-hoc 线程封闭:依赖程序控制实现,脆弱,是最糟糕的一种方式,不推荐!
  2. 堆栈封闭:应用广泛,依靠各线程局部变量的堆栈拷贝副本实现,无并发问题。避免使用全局变量。
  3. 数据库连接对应JDBC的Connection对象。
  4. ThreadLocal线程封闭:实现较好,效率较高。(以后会做源码分析……)
阅读全文 »

不可变对象

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 1,711 字 | 阅读时长 ≈ 8 分钟

概述

不可变对象一经安全发布,它就是不可变的。

需满足的条件

  • 对象创建后其状态不能被修改;
  • 对象所有的域都是final类型;
  • 对象是正确创建的(在对象创建期间,其this引用未逸出);

    其中可以采用的方式包括:

    1. 将类声明为final,不可被继承;
    2. 将所有的成员声明为私有的,不允许直接访问其私有成员;
    3. 对变量不向外提供set方法;
    4. 将所有成员也声明为final,只能赋值一次;
    5. 通过构造器初始化所有成员,进行深度拷贝;
    6. 在get方法中,不直接返回对象本身,而是克隆对象,并返回对象的拷贝。
阅读全文 »

安对象安全发布的四种策略

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 1,345 字 | 阅读时长 ≈ 5 分钟

本节例子内容较多~

四种方法概述

  • 在静态初始化函数中初始化一个函数的引用
  • 将对象的引用保存到volatile类型域AtomicReference对象中
  • 将对象的引用保存到某个正确构造对象的final类型域中(后续再进行补充!)
  • 将对象的引用保存到一个由锁保存的域中
阅读全文 »

安全发布对象——发布与逸出

发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数:
字数统计: 529 字 | 阅读时长 ≈ 2 分钟

对象发布

使一个对象能够被其他范围之外的对象/代码所使用。

实际日常开发中经常发布对象的例子有:

  1. 通过类的非私有方法,返回对象的引用;
  2. 通过公有的静态变量发布对象
阅读全文 »
1…678…12
SupriseMF

SupriseMF

57 日志
4 分类
5 标签
RSS
GitHub 邮件联系我 Google+ StackOverflow
Links
  • 百度
  • 谷歌
  • 知乎
0%
© 2018 SupriseMF 本站总访问量次 本站访客数人次 | Site words total count: 69.1k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4