美文网首页
线程封闭

线程封闭

作者: 文刀雨 | 来源:发表于2021-03-18 00:09 被阅读0次

把对象封装到一个线程里

  • Ad-hoc 线程封闭:程序控制实现,最糟糕,忽略
  • 堆栈封闭:局部变量,无并发问题(局部变量)
  • ThreadLocal 线程封闭: 特别好的封闭方法
线程不安全 线程安全
StringBuilder StringBuffer
SimpleDateFormat JodaTime
ArrayList,HashSet,HashMap等Collection

同步容器

线程不安全 同步容器类(不代表线程安全)
ArrayList Vector,Stack
HashMap HashTable(key,value不能为null)
List,Set,Map Collections.synchronizedXXXX(List,Set,Map)

在 iterator 和foreach 中的remove操作会出现
java.util.ConcurrentModificationException
改用 for循环

并发容器J.U.C
java.util.concurrent

容器 并发容器
ArrayList CopyOnWriteArrayList(建议在读多写少的场景使用)
HashSet,TreeSet CopyOnWriteArraySet,ConcurrentSkipListSet
HashMap,TreeMap ConcurrentHashMap,ConcurrentSkipListMap

安全共享策略
线程限制: 一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改
共享只读:一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问,但是任何线程都不能修改它
线程安全对象: 一个线程安全的对象或者容器,在内部通过同步机制来保证线程安全,所以其他线程无需额外的同步就可以通过公共接口 随意访问它。
被守护对象:被守护对象只能通过获取特定的锁来访问

相关文章

  • 线程封闭

    线程封闭 对象封闭在一个线程里,这样线程也是安全的 如何实现 Ad-hoc 最糟糕 堆栈封闭:局部变量,无并发问题...

  • 线程封闭

    线程封闭 当访问共享的可变数据时,通常需要使用同步。一种避免使用同步的方式就是不共享数据。如果仅在单线程内访问数据...

  • 线程封闭

    把对象封装到一个线程里 Ad-hoc 线程封闭:程序控制实现,最糟糕,忽略 堆栈封闭:局部变量,无并发问题(局部变...

  • 线程封闭

    概述 多线程访问共享数据时,涉及到线程间数据同步问题。当场景不需要用到数据共享时,提出了线程封闭的概念,数据封闭在...

  • 线程封闭

    我们可以通过把对象设计成不可变对象来躲避并发,我们还可以通过使用线程封闭来实现线程安全,所谓线程封闭 就是将数据都...

  • 自定义过滤器和拦截器实现ThreadLocal线程封闭

    线程封闭 线程封闭一般通过以下三个方法: Ad-hoc线程封闭:程序控制实现,最糟糕,忽略 堆栈封闭:局部变量,无...

  • Java线程封闭

    线程封闭 多线程中不需要使用共享数据,使用数据封闭避免使用同步的技术 线程封闭的具体实现:ThreadLocal、...

  • ThreadLocal和InheritableThreadLoc

    什么是线程封闭 把对象封闭在一个线程里,即使这个对象不是线程安全的,也不会出现并发安全问题。实现线程封闭大致有三种...

  • 2020-02-02 3.1 线程封闭

    本文是Java线程安全和并发编程知识总结的一部分。 3.1 线程封闭 线程封闭的意思是: 只在线程内共享数据,不在...

  • 线程封闭——ThreadLocal

    线程封闭概念 多线程访问共享数据为了安全性通常需要同步,如果仅在单线程内访问数据就不需要同步,这种避免共享数据的技...

网友评论

      本文标题:线程封闭

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