《Java Concurrency in Practice》- Chapter I Introduction

53 阅读1分钟

绪论

线程的优势

  1. 利用多核处理器
  2. 简化建模
  3. 简化异步任务的处理
  4. 提升用户接口的响应率

线程的劣势

安全危害

什么是安全危害(Safety Hazard)?

所谓安全危害,就是指在多线程环境下,代码缺少线程同步机制,导致系统出现非预期的错误或者数据损坏。具体表现为以下的核心问题:

  1. 竞态条件
  2. 内存可见性的问题
  3. 原子性缺失
  4. 数据不一致性后果

活性危害

安全意味着“坏事情不会发生”,而活性(liveness)意味着“好事情一定会发生”。而活性失败,是指并发编程中,因资源竞争和资源调度问题导致线程无法正常推进任务的现象,具体表现为以下的核心问题:

  1. 死锁(Dead Lock)
  2. 活锁(Live Lock)
  3. 饥饿(Starve)

性能危害

和活性相关的就是性能了,性能关注“好的事情更快发生”。性能危害是指并发编程情况下因并发设计或者资源管理不当导致的系统吞吐量下降、响应延迟增加或者资源利用率不足等问题。其核心表现方式与原因有:

  1. 上下文切换
  2. 锁竞争和同步牙齿
  3. 缓存一致性开销
  4. 资源调度低效