12如何用面向对象思想写好并发程序

12如何用面向对象思想写好并发程序

  • 封装共享变量
  • 识别共享变量间的约束条件
  • 制定并发访问策略

封装共享变量

将共享变量作为对象属性封装在内部
不变的量可用final修饰,避免并发问题

识别共享变量约束条件

比如数值型的上下限,上限不能小于下限
反映在代码里,基本上都会有if语句,此时注意竞态条件

制定并发访问策略

  1. 避免共享
    利于线程本地存储以及为每个任务分配独立的线程
  2. 不变模式
    Java领域应用的很少,但在其他领域却有着广泛的应用,例如 Actor模式、CSP模式以及函数式编程的基础都是不变模式
  3. 管程及其他同步工具
    Java领域万能解决方案:管程,但是对于很多特定场景,使用 Java并发包提供的读写锁、并发容器等同步工具会更好

写出健壮并发程序的宏观原则

  1. 优先使用成熟的工具类
    JavaSDK并发包里提供了丰富的工具类,自己造轮子要小心
  2. 小心使用低级的同步原语
    synchronized、Lock、Semaphore等并不简单
  3. 避免过早优化
    安全第一,并发程序首先要保证安全,出现性能瓶颈后再优化。在设计期和开发期,很多人经常会情不自禁地预估性能的瓶颈,并对此实施优化,但残酷的现实却是:性能瓶颈不是你想预估就能预估的。