多线程

AQS-AbstractQueuedSynchronizer

         抽象同步队列器,提供一个框架,简化程序员对锁,同步控制工具的开发,两个关键:

       1 state: 线程状态表示

       2 Queue 等待线程队列

      

ReentrantLock: 基于aqs实现的,使用方法: lock, unlock

    

 

 

 

Condition: 条件等待,condition维护自己的waitQueue,支持按特定条件唤醒 await, signal

              理解: lock线程等待队列, condition等待队列 ,使用场景主要为:精细控制线程执行,例如 生产者 消费者  顺序执行

               嵌套在lock内部使用:

    

 

 

 

      

     使用示例1 生产者 消费者:

      

 

 

 

              使用示例2 顺序执行

      

 

 

 

 

Semaphore: 信号量,主要是限制可执行线程数量,通常可以用在限流 和 池化技术中 : acquire, release
CountDownLatch: 线程嵌套,子线程执行完成后(countDownLatch 设置值为0后),再执行父线程:, 关键方法,countdown await
CyclicBarrier: 可以循环利用, 属性: paries 线程数 (多少个执行完成后,认为第一个栅栏或者故障 跳过,即 执行 await 后面的代码, barrierCommand,满足栅栏或者故障跳过,与执行await 后 之间 执行的方法,即: 每次过栅栏,该执行的方法)

 

示例: 不指定barrierCommand

    

 

 

           指定 barrierCommand

    

 

posted on 2022-07-29 12:07  爱老虎哟  阅读(25)  评论(0编辑  收藏  举报

导航