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的简单应用结束了

  • 相关阅读:
    使用jquey的css()方法改变样式,
    js 小总结
    .net mvc项目 ajax
    推荐一个优秀的前端框架——Bootstrap
    关于页面优化的方法收集(不断更新)
    软件开发中没有所谓正确的方法(转)
    PHP框架CI(codeigniter)的使用笔记
    前端知识结构图(转)
    PHP生成缩略图的一个方法类(转)
    apache设置映射文件夹的配置方法
  • 原文地址:https://www.cnblogs.com/maigao/p/12955390.html
Copyright © 2011-2022 走看看