10-并发(78-84)
78. 同步访问共享的可变数据
synchronized 可以保证同一时刻,只有一个线程可以执行某一个方法或者代码块。
更灵活的用法可以使用 Lock 接口的实现类 ReentrantLock。
79. 避免过度同步
通常,在同步的区域内做尽可能少的工作。
80. executor、task 和 stream 优先于线程
如题。
81. 并发工具优先于 wait 和 notify
比如 使用 ConcurrentHashMap 而不是 Collections.synchronizedMap
比如 间歇定时使用 System.nanoTime 而不是 System.currentTimeMillis
82. 线程安全性的文档化
lock 域应该始终声明为 final。
83. 慎用延迟初始化
如果处于对性能的考虑对静态域使用延迟初始化,就适用于 lazy initialization holder class 模式。
84. 不要依赖线程调度器
线程优先级是 java 平台上最不可移植的特征了。
10-并发(78-84)
https://janycode.github.io/2020/09/16/02_编程语言/01_Java/04_EffectiveJava/10-并发(78-84)/