美文网首页
8.线程安全策略

8.线程安全策略

作者: JarvisTH | 来源:发表于2019-11-23 22:05 被阅读0次

一、不可变对象
1.不可变对象需要满足的条件:

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

2.final关键字:类、方法、变量

3.其他不可变方式:
Collections.unmodifiableXXX:Collection、List、Set、Map...
Guava:ImmutableXXX:Collection、List、Set、Map...

二、线程封闭
1.Ad-hoc线程封闭:程序控制实现,最糟糕,忽略;
2.堆栈封闭:局部变量,无并发问题;
3.ThreadLocal线程封闭:特别好的封闭方法。

三、线程不安全类与写法
1.StringBuilder->StringBuffer:StringBuffer使用synchronized,性能有所损耗。StringBuilder使用在局部变量效果更好,即堆栈封闭。

2.SimpleDateFormate->JodaTime:SimpleDateFormate不是一个线程安全的对象,解决方法可以是堆栈封闭。实际处理日期更推荐JodaTime,对比SimpleDateFormate线程安全,也有其他优势。

3.ArrayList、HashSet、HashMap等Collections

4.先检查再执行:if(condition(a)){handle(a);}:线程不安全写法。

四、同步容器
同步容器不一定线程安全。
1.ArrayList->Vector,Stack:
2.HashMap->HashTable
3.Collections.synchronizedXXX(List,Set,Map)

在使用foreach或者迭代器循环集合时,避免在操作时做remove相关的更新,可以先打标记后删除。多线程时,可以使用synchronized或者lock做迭代,也可以使用并发容器。

五、并发容器 J.U.C
1.ArrayList->CopyOnWriteArrayList:适合读多写少。
2.HashSet、TreeSet->CopyOnWriteArraySet、ConcurrentSkipListSet:对于SkipList使用批量操作时,需要手动同步,操作不是原子性的。
3.HashMap、TreeMap->ConcurrentHashMap、ConcurrentSkipListMap:ConcurrentHashMap不允许空值;ConcurrentSkipListMap的key值有序,支持更高并发。

相关文章

  • 8.线程安全策略

    一、不可变对象1.不可变对象需要满足的条件: 对象创建后其状态就不能修改 对象所有域都是final类型 对象是正确...

  • Spring中的Controller ,Service,Dao是

    结论:不是线程安全的 Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以...

  • 线程安全策略

    不可变对象(安全的) String类通过final修饰,为不可变对象public final class Stri...

  • 线程安全策略

    不可变对象 对象创建以后其状态就不能修改 对象所有域是final类型 对象是正确的创建的(在对象创建期间,this...

  • 线程安全策略

    策略1 - 不可变对象 对象创建以后其状态就不能修改。 对象所有域都是final类型。 对象是正确创建的(在对象创...

  • 线程安全策略

    1.使用 final 关键字创建不可变对象2.使用下列方法初始化对象 3.堆栈封闭:即在方法内定义变量4.Thre...

  • 关于线程安全策略

    四个线程安全策略 1、线程限制: 一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改 2、共享只读: 一...

  • 线程安全策略(二)——线程封闭

    参考线程封闭 线程封闭 把对象封装到一个线程里,只有这一个线程能看到这个对象(即使这个对象不是线程安全的也不会出现...

  • Spring中的Bean是线程安全的吗?

    Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以说Spring容器中的...

  • 8 线程安全策略

    1️⃣不可变对象 1. 不可变对象需要满足的条件:① 对象创建后其状态就不能修改;② 对象所有域都是final类型...

网友评论

      本文标题:8.线程安全策略

      本文链接:https://www.haomeiwen.com/subject/ubxkwctx.html