标签:可变 不可变对象 返回 注意 安全 阶段 更改 多线程 odi
假如现在有一个非线程安全类, 让它可以被多线程安全访问, 可以做一层封装. 多线程 只通过 封装类进行访问.
注意事项, 一定要加对锁!
若一个对象是可变对象, 假如不是太频繁地作为参数或者返回值传递, 可以通过每次在传递时, 构建深拷贝来保证线程安全.
这样做的缺点是:
常用的方法和类:
Collectons.unmodifiableMap
不可变对象总是线程安全的, 可以利用这一特性, 将对象在 设计阶段设计成不可变对象. 然后在传递的时候, 就可以将直接返回不可变对象的引用.
常用的方法和类:
ConcurrentHashMap
Collectons.unmodifiableMap
标签:可变 不可变对象 返回 注意 安全 阶段 更改 多线程 odi
原文地址:http://www.cnblogs.com/pragmatic/p/6260355.html