admin管理员组

文章数量:1599534

文章目录

  • Condition
    • Condition基本使用
    • Condition源码分析
      • condition.await
      • Condition.signal
      • 被阻塞的线程唤醒之后的逻辑:
  • Condition 总结

Condition

之前用synchronized的时候,使用wait/notify可以实现线程间的通信。除此之外,JUC包里提供了类似的线程通信机制,Condition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒;

Condition基本使用

ConditionWait

public class ConditionDemoWait implements Runnable{
   
    private Lock lock;private Condition condition;
    public ConditionDemoWait(Lock lock,
                             Condition condition){
   
        this.lock=lock;
        this.condition=condition;
    }
    @Override
    public void run() {
   
        System.out.println("begin - ConditionDemoWait");
        try {
   
            lock.lock();
            condition.await();
            System.out.println("end - ConditionDemoWait");
        } catch (InterruptedException e) {
   
            e.printStackTrace();
        }finally {
   
            lock.unlock();
        }
    }
}

ConditionSignal

public class ConditionDemoSignal implements Runnable{
   
        
    private Lock lock;
    private Condition condition;
    public ConditionDemoSignal(Lock lock, Condition condition){
   
        this.lock=lock;
        this.condition=condition;
    }
    @Override
    public void run() {
   
        System.out.println("begin

本文标签: 原理机制Javacondition