hooyantsing's Blog

18_线程同步机制

字数统计: 313阅读时长: 1 min
2020/08/21

18 线程同步机制

狂神说Java 多线程详解

线程同步

  • 由于同一进程的多个线程共享同一块储存空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问时加入 锁机制 synchronized ,当一个线程获取对象的排他锁,独占资源,其他线程必须等待,使用后释放锁即可,存在以下问题: * 一个线程持有锁会导致其他所有需要此锁的线程挂起。
    • 在多线程竞争下,加锁,释放锁会导致比较多的上下文切换 和 调度延时,引起性能问题。
    • 如果一个优先级高的线程等待一个优先级低的线程释放锁,会导致优先级倒置,引起性能问题。
      举个类似线程同步的例子:

旅游景点有个公共厕所,大家都想上厕所,那么大家需要排队(列队)。当一个人(线程)进了厕所,他需要把门关上(上锁),以防止其他人进来,当他解决了生理问题,就会从厕所里出来(解锁)把厕所让给别人。

CATALOG
  1. 1. 18 线程同步机制
    1. 1.1. 线程同步