线程不安全——Part-1 发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数: 字数统计: 1,045 字 | 阅读时长 ≈ 5 分钟 概述 线程不安全类:如果一个类的对象同时被多个线程访问,若不做相应的同步或并发处理,容易出现线程不安全的现象,比如:抛出异常、逻辑处理错误等。 阅读全文 »
线程封闭 发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数: 字数统计: 1,038 字 | 阅读时长 ≈ 4 分钟 概述线程封闭是一种较为简单的线程并发的方法。它其实把对象封装到一个线程里,该对象只对该线程是可见的。当然也就是线程安全的了。 实现线程封闭的方法 Ad-hoc 线程封闭:依赖程序控制实现,脆弱,是最糟糕的一种方式,不推荐! 堆栈封闭:应用广泛,依靠各线程局部变量的堆栈拷贝副本实现,无并发问题。避免使用全局变量。 数据库连接对应JDBC的Connection对象。 ThreadLocal线程封闭:实现较好,效率较高。(以后会做源码分析……) 阅读全文 »
不可变对象 发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数: 字数统计: 1,711 字 | 阅读时长 ≈ 8 分钟 概述不可变对象一经安全发布,它就是不可变的。 需满足的条件 对象创建后其状态不能被修改; 对象所有的域都是final类型; 对象是正确创建的(在对象创建期间,其this引用未逸出); 其中可以采用的方式包括: 将类声明为final,不可被继承; 将所有的成员声明为私有的,不允许直接访问其私有成员; 对变量不向外提供set方法; 将所有成员也声明为final,只能赋值一次; 通过构造器初始化所有成员,进行深度拷贝; 在get方法中,不直接返回对象本身,而是克隆对象,并返回对象的拷贝。 阅读全文 »
安对象安全发布的四种策略 发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数: 字数统计: 1,345 字 | 阅读时长 ≈ 5 分钟 本节例子内容较多~ 四种方法概述 在静态初始化函数中初始化一个函数的引用 将对象的引用保存到volatile类型域AtomicReference对象中 将对象的引用保存到某个正确构造对象的final类型域中(后续再进行补充!) 将对象的引用保存到一个由锁保存的域中 阅读全文 »
安全发布对象——发布与逸出 发表于 2018-08-02 | 更新于: 2018-08-02 | 分类于 Java之并发编程 | 阅读次数: 字数统计: 529 字 | 阅读时长 ≈ 2 分钟 对象发布使一个对象能够被其他范围之外的对象/代码所使用。 实际日常开发中经常发布对象的例子有: 通过类的非私有方法,返回对象的引用; 通过公有的静态变量发布对象 阅读全文 »