笔记
来源:互联网 发布:linux下查看mysql版本 编辑:程序博客网 时间:2024/05/21 10:37
第10章:并发
第66条:同步访问共享的可变数据
关键字Synchronized可以保证在同一时刻,只有一个线程可以执行一个方法,或者某一个代码块
为了在线程之间进行可靠的通信,也为了互斥访问,同步是必要的
当多个线程共享可变数据的时候,每个读或者写数据的线程都必须执行同步
第67条:避免过度同步
依据情况的不同,过度同步可能会导至性能降低,死锁,甚至不确定的行为
通常应该在同步区域做尽可能少的工作
第68条:executor和task优先与线程
第69条:并发工具优先于wati和notify
第70条:线程安全性的文档化
不可变
无条件的线程安全
有条件线程安全
非线程安全
线程对立
第71条:慎用延迟初始化
- 延迟初始化:延迟到需要域的值时才将它初始化的这种行为称作延迟初始化
第72条:不要依赖于线程调度器
- 任何依赖于线程调解器来达到正确性或者性能要求的程序,很有可能都是不可移植的
第73条:避免使用线程组
序列化
将一个对象编码成一个字节流称为该对象序列化,相反的处理过程称为反序列化
第74条:谨慎的实现Serializable接口
实现Serializable接口而付出的最大代价是,一旦一个类被发布,救大大降低了改变这个类的实现的灵活性
实现Serializable的第二个代价是,它增加了出现bug和安全漏洞的可能性
实现Serializable的第三个代价是,随着类发行新的版本,相关的测试负担也增加了
第75条:考虑使用自定义的序列化形式
第76条:保护性的编写readObject方法
- 当一个对象被反序列化的时候,对于客户端不应该拥有的对象引用,如果哪个域包含了这样的对象引用,就必须要做到保护性拷贝
第77条:对于实例控制,枚举优先域readResolve
第78条:考虑用序列化代理代替序列化实力
0 0
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- 笔记
- udacity 优达学成 红包
- luogu1345[USACO5.4]奶牛的电信
- BZOJ2002. [Hnoi2010]Bounce 弹飞绵羊
- 小七的Javascript 1月11日
- Linux配置java环境
- 笔记
- Android Studio 多渠道打包之友盟打包
- Jquery操作元素
- 带有清空功能的EditTtxt
- KVM配置实现跨网段通信
- 组件设置setCompoundDrawables不生效解决办法
- NOIP必备知识——学习清单
- import cv2 报错 Segmentation fault (core dumped)
- 配置Log4j