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)/
作者
Jerry(姜源)
发布于
2020年9月16日
许可协议