扩展阅读
  • java命名空间java.lang.management类managementfactory的类成员方法: getoperatingsystemmxbean定义及介绍
  • java.util.Date 和 java.slq.Date 如何最简单实现互换?
  • java命名空间java.lang.management接口memorypoolmxbean的类成员方法: isvalid定义及介绍
  • 轻量级Java开发工具 Java Tools
  • java命名空间java.lang.management接口threadmxbean的类成员方法: isthreadcputimesupported定义及介绍
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • java命名空间java.lang.management接口memorymanagermxbean的类成员方法: isvalid定义及介绍
  • 各位大虾,为什么我的java程序能通过编译,但是在用java命令运行程序的时候却老是报错“Exception in thread "main" java.lang.NoClassDe
  • java命名空间java.awt.image接口imageobserver的类成员方法: properties定义及介绍
  • 请问:java 入门以及学好Java要看哪些书籍阿????
  • java命名空间java.sql类types的类成员方法: other定义及介绍
  • Java源码工具 java2html
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • java bean和java class的区别??
  • java命名空间java.awt类color的类成员方法: gettransparency定义及介绍
  • 学习JAVA,请推荐好的 JAVA站点!
  • java命名空间java.lang.management类memoryusage的类成员方法: getcommitted定义及介绍
  • 关于Java好的网站,哪个Java好的教程。
  • java命名空间java.text类decimalformat的类成员方法: setparsebigdecimal定义及介绍
  • 如何将java.util.Date转化成java.sql.Date?
  • java命名空间java.beans接口propertyeditor的类成员方法: getvalue定义及介绍
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  •  
    当前位置:  编程语言>java/jsp

    java命名空间java.util.concurrent.locks接口condition的类成员方法: awaituntil定义及介绍

     
        发布时间:2014-2-17  


        本文导语:  awaituntil boolean awaituntil(date deadline) throws interruptedexception 造成当前线程在接到信号、被中断或到达指定最后期限之前一直处于等待状态。 与此条件相关的锁以原子方式释放,并且出于线程调度的目的,将禁用当...

    awaituntil

    boolean awaituntil(date deadline)
                       throws interruptedexception
    造成当前线程在接到信号、被中断或到达指定最后期限之前一直处于等待状态

    与此条件相关的以原子方式释放,并且出于线程调度的目的,将禁用当前线程,且在发生以下五种情况之一 以前,当前线程将一直处于休眠状态:

    • 其他某个线程调用此 conditionsignal() 方法,并且碰巧将当前线程选为被唤醒的线程;或者
    • 其他某个线程调用此 conditionsignalall() 方法;或者
    • 其他某个线程中断当前线程,且支持中断线程的挂起;或者
    • 指定的最后期限到了;或者
    • 发生“虚假唤醒”。

    在所有情况下,在此方法可以返回当前线程之前,都必须重新获取与此条件有关的锁。在线程返回时,可以保证 它保持此锁。

    如果当前线程:

    • 在进入此方法时已经设置了该线程的中断状态;或者
    • 在支持等待和中断线程挂起时,线程被中断,
    则抛出 interruptedexception,并且清除当前线程的已中断状态。在第一种情况下,没有指定是否在释放锁之前发生中断测试

    返回值指示是否到达最后期限,使用方式如下:

     synchronized boolean amethod(date deadline) {
       boolean stillwaiting = true;
       while (!conditionbeingwaitedfor) {
         if (stillwaiting)
             stillwaiting = thecondition.awaituntil(deadline);
          else
            return false;
       }
       // ... 
     }
     

    实现注意事项

    假定调用此方法时,当前线程保持了与此 condition 有关联的锁。这取决于确定是否为这种情况以及不是时,如何对此作出响应的实现。通常,将抛出一个异常(比如 illegalmonitorstateexception)并且该实现必须对此进行记录。

    与响应某个信号而返回的普通方法相比,或者与指示是否到达指定最终期限相比,实现可能更喜欢响应某个中断。在任意一种情况下,实现必须确保信号被重定向到另一个等待线程(如果有的话)。

    参数
    deadline - 一直处于等待状态的绝对时间
    返回:
    如果在返回时已经到达最后期限,则返回 false,否则返回 true
    抛出:
    interruptedexception - 如果当前线程被中断(并且支持中断线程挂起)
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3