Java并发编程实战(3)

来源:互联网 发布:ai软件 编辑:程序博客网 时间:2024/06/06 03:47

▲如果在一个不变性条件中包含多个变量,那么在执行任何访问相关变量的操作时,都必须持有保护这些变量的锁。

▲如果在某个操作中包含有基于状态的先验条件,那么这个操作就称为依赖状态的操作。比如从空队列中移除一个元素,队列必须处于“非空”状态。

▲当一个对象被封装到另一个对象中时,能够访问被封装对象的所有代码都是已知的。与对象可以由整个程序访问的情况相比,更易于对代码进行分析。通过将封闭机制与何时的加锁策略结合起来,可以确保以线程安全的方式来使用非线程安全的对象。

▲一些包装器工厂方法,比如Collections.synchronizedList(new ArrayList()),包装器对象拥有ArrayList对象的唯一引用,那么它就是线程安全的。

▲CopyOnWrite:“读写分离”,读的时候直接读原先容器,写的时候先复制一个新的容器,然后向其中添加元素,再将原容器的引用指向新容器,适用于“读多写少”。

▲当你要拓展一个类时,想要新增的方法同样是线程安全的,即可以和类原先的方法可以并发安全执行,你必须知道原先的方法使用的是什么锁,即锁的一致性。比如Vector和封装器类使用的是内置锁。

▲java.text.SimpleDateFormat不是线程安全的。

原创粉丝点击