zoukankan      html  css  js  c++  java
  • 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的简单应用结束了

  • 相关阅读:
    Tomcat 7.x 6.x 和 JDK 7 旧版本下载教程
    下载ios系统文件,使用UltraISO刻录系统(windows Server)光盘,安装操作系统
    MSDN, 我告诉你
    669. 修剪二叉搜索树
    99. 恢复二叉搜索树
    windows系统 python安装uwsgi教程
    mysql5.7修改密码命令
    客户端浏览器访问django服务器
    二、kafka的环境部署+命令行
    二十、SpringCloud Alibaba Seata处理分布式事务(一、基础)
  • 原文地址:https://www.cnblogs.com/maigao/p/12955390.html
Copyright © 2011-2022 走看看