Java并发编程实战(3)
来源:互联网 发布:ai软件 编辑:程序博客网 时间:2024/06/06 03:47
▲如果在一个不变性条件中包含多个变量,那么在执行任何访问相关变量的操作时,都必须持有保护这些变量的锁。
▲如果在某个操作中包含有基于状态的先验条件,那么这个操作就称为依赖状态的操作。比如从空队列中移除一个元素,队列必须处于“非空”状态。
▲当一个对象被封装到另一个对象中时,能够访问被封装对象的所有代码都是已知的。与对象可以由整个程序访问的情况相比,更易于对代码进行分析。通过将封闭机制与何时的加锁策略结合起来,可以确保以线程安全的方式来使用非线程安全的对象。
▲一些包装器工厂方法,比如Collections.synchronizedList(new ArrayList()),包装器对象拥有ArrayList对象的唯一引用,那么它就是线程安全的。
▲CopyOnWrite:“读写分离”,读的时候直接读原先容器,写的时候先复制一个新的容器,然后向其中添加元素,再将原容器的引用指向新容器,适用于“读多写少”。
▲当你要拓展一个类时,想要新增的方法同样是线程安全的,即可以和类原先的方法可以并发安全执行,你必须知道原先的方法使用的是什么锁,即锁的一致性。比如Vector和封装器类使用的是内置锁。
▲java.text.SimpleDateFormat不是线程安全的。
阅读全文
0 0
- Java并发编程实战(3)
- Java并发编程实战
- Java并发编程实战--
- Java并发编程实战-
- Java 并发编程实战
- java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- scollrfresh
- 枚举常量
- Android屏幕适配实战
- epoll()详解
- Qt获取运行设备本机IP地址
- Java并发编程实战(3)
- Imagick 运行到 $im->readImage($pdf); 就弹出错误对话框
- 电商项目所需依赖
- 在mac下用crontab来定时执行scrapy爬虫命令
- Oracle部分设置
- 3332-数据结构实验之栈与队列五:下一较大值(二)
- 写让人能读懂的代码
- 3334-数据结构实验之栈与队列七:出栈序列判定
- 【中国剩余定理 && 枚举 && 思维】UVA 11754 Code Feat