首页 > 代码库 > 并发场景

并发场景

原因:请求数多时对共享资源的并发访问,产生竞争。

例如:

  • 操作系统,进程和线程对CPU资源的竞争获取
  • 生产者-消费者问题,比如队列
  • 读者-作者问题
  • 哲学家进餐问题
  • 客服分配问题,限制每个客服最多服务多少个用户,多余的用户只能排队
  • 线程池,比如Web容器的线程池
  • 秒杀,抢票,比如:购物,秒杀,买火车票,飞机票,电影票等,其中商品和票本身都是竞争的资源。

 

解决并发的工具:

  • 操作系统,信号量PV操作实现进程之间的互斥和同步。

Java语言

  • synchronized关键字
  • concurrent包工具类,比如:ConcurrentHashMap,ArrayBlockingQueue, Lock,信号量

死锁问题

  • 概念:一个进程集合中,每个进程都在等待其他进程占用的资源
  • 死锁预防:死锁的必要条件:互斥、请求和保持、不剥夺、环路等待。
  • 死锁避免,将系统状态区分为安全状态和不安全状态,为一组进程排序并能最大限度合理的分配资源成为安全状态。
  • 死锁检测和解除:进程-资源分配图检测,剥夺死锁进程资源或者撤销死锁进程。

并发场景