首页 > 代码库 > Java 并发编程 - 2
Java 并发编程 - 2
设计线程安全类
套路一: 实例限制
假如现在有一个非线程安全类, 让它可以被多线程安全访问, 可以做一层封装. 多线程 只通过 封装类进行访问.
注意事项, 一定要加对锁!
套路二: 返回深拷贝
若一个对象是可变对象, 假如不是太频繁地作为参数或者返回值传递, 可以通过每次在传递时, 构建深拷贝来保证线程安全.
这样做的缺点是:
- 要求对象以及所引用的对象(包括下层引用), 都有深拷贝的方法
- 若调用太频繁, 会产生性能问题
- 返回的对象是一份拷贝, 感知不到所做的更改
常用的方法和类:
- deepCopy()
Collectons.unmodifiableMap
套路三: 不可变对象
不可变对象总是线程安全的, 可以利用这一特性, 将对象在 设计阶段设计成不可变对象. 然后在传递的时候, 就可以将直接返回不可变对象的引用.
常用的方法和类:
ConcurrentHashMap
Collectons.unmodifiableMap
- 不可变对象
Java 并发编程 - 2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。