Skip to content

01 并发编程的挑战

为什么要并发编程?

让程序运行的更快!

线程多程序不一定快

多线程的问题:

  • 上下文切换
  • 死锁
  • 软硬件资源的限制

如何减少上下文切换

无锁并发编程、CAS 算法、使用最小的线程、使用协程

  • 无锁并发编程。竞争锁的时候,会引起上下文切换。可以尽量少用锁
  • CAS 算法
  • 尽量不去创建新的线程,使用现用的线程解决问题
  • 协程。在单线程中实现任务的调度

死锁避免

  • 避免一个线程同时获得多个锁
  • 尽量保证一个锁只占用一个资源
  • 尝试使用定时锁
  • 数据库的锁,加解锁必须在一个数据库连接中

资源问题

没那么多资源,非要搞并发,说不来还比串行的慢

建议

多用 JDK 并发包提供的并发容器和工具类解决并发问题