• Java并发之Condition的简单使用


    注:大佬勿喷/

    1,Condition的方法:第一次看到之后是否感觉到这应该是我看到方法数量极少数极少数类之一了吧。好了,我们先来说大概意思。wait: 等待嘛,没什么大的事情,只是在前面加个“a"加以区别(个人理解啊)。

    2,await():表示一直等待,直到被唤醒为止。

      await(long,TimeUnit): 这个是超时返回,给定一个时间,超过这个时间没有处理,则返回false。

      signal();从等待队列唤醒一个,signalAll()则是全部唤醒了。其它的。。。

    3. 实现

      

    //通过ReentrantLock 关联 Condition
            static ReentrantLock lock = new ReentrantLock();
        static Condition condition = lock.newCondition();
    //创建一个线程类
    public
    static class T1 extends Thread{ public T1(String name) { super(name); } @Override public void run() { //加锁 lock.lock(); System.out.println(System.currentTimeMillis() + " , " + this.getName() + " , start"); try { //参数await()方法;如果没有中断消息,则超时,返回false boolean r = condition.await(5, TimeUnit.SECONDS); System.out.println(r); //awaitNanos方法(); // long r1 = condition.awaitNanos(TimeUnit.SECONDS.toNanos(5)); // System.out.println(r1); System.out.println(System.currentTimeMillis() + " , " + this.getName() + " , end"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //解锁 lock.unlock(); } } }

    然后就是main函数:

    //声明 3个线程
    public static void main(String[] args) throws InterruptedException {
            new T1("线程1").start();
            new T1("线程2").start();
            new T1("线程3").start();
            
            //休眠2s--> 返回?
            TimeUnit.SECONDS.sleep(2);
                    
                     //这是唤醒线程了
                    lock.lock(); 
              try { 
    //              condition.signalAll(); 
                  condition.signal();
                  } 
              finally { lock.unlock(); }
    }

    结果:

    接一下我们把  signal()   改为  signalAll():

      

    好了,condition的简单应用结束了

  • 相关阅读:
    简单数列极限证明
    既然已经半退役了,就写点新东西吧
    快速幂(整数+实数)
    D. Constant Palindrome Sum 差分+思维
    排序网络
    ClickHouse数据同步
    C++ 复习
    使用mac查看iphone uuid方法
    15. 蓝绿发布导致需求不能验证
    通过反射获取对象的属性名、属性值
  • 原文地址:https://www.cnblogs.com/maigao/p/12955390.html
Copyright © 2020-2023  润新知