扩展阅读
  • 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的类成员方法: awaitnanos定义及介绍

     
        发布时间:2014-2-17  


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

    awaitnanos

    long awaitnanos(long nanostimeout)
                    throws interruptedexception
    造成当前线程在接到信号、被中断或到达指定等待时间之前一直处于等待状态

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

    • 其他某个线程调用此 conditionsignal() 方法,并且碰巧将当前线程选为被唤醒的线程;或者
    • 其他某个线程调用此 conditionsignalall() 方法;或者
    • 其他某个线程中断当前线程,且支持中断线程的挂起;或者
    • 已超过指定的等待时间;或者
    • 发生“虚假唤醒”。

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

    如果当前线程:

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

    在返回时,该方法返回了所剩毫微秒数的一个估计值,以等待所提供的 nanostimeout 值的时间,如果超时,则返回一个小于等于 0 的值。可以用此值来确定在等待返回但某一等待条件仍不具备的情况下,是否要再次等待,以及再次等待的时间。此方法的典型用法采用以下形式:

     synchronized boolean amethod(long timeout, timeunit unit) {
       long nanostimeout = unit.tonanos(timeout);
       while (!conditionbeingwaitedfor) {
         if (nanostimeout > 0)
             nanostimeout = thecondition.awaitnanos(nanostimeout);
          else
            return false;
       }
       // ... 
     }
     

    设计注意事项:此方法需要一个 nanosecond 参数,以避免在报告剩余时间时出现截断错误。在发生重新等待时,这种精度损失使得程序员难以确保总的等待时间不少于指定等待时间。

    实现注意事项

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

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

    参数:
    nanostimeout - 等待的最长时间,以毫微秒为单位
    返回:
    nanostimeout 值减去花费在等待此方法的返回结果的时间的估算。正值可以用作对此方法进行后续调用的参数,来完成等待所需时间结束。小于等于零的值表示没有剩余时间。
    抛出:
    interruptedexception - 如果当前线程被中断(并且支持中断线程挂起)
    相关文章推荐:


    站内导航:


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

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

    浙ICP备11055608号-3