zoukankan      html  css  js  c++  java
  • java中的sleep()和wait()的区别

    1. sleep()方法:是属于Thread类中的。

      wait()方法:是属于Object类中的;两者都会造成线程的阻塞(让出cpu使用权)

    2. sleep()方法是在指定的时间让当前线程暂停执行,让出cpu该其他线程,但是他的状态依然保持(就是执行到了哪行代码就在哪行停留着,等到超时或者调用interrupt()来终止),当指定的时间到了又会自动恢复运行状态,从阻塞状态变为就绪状态

     wait()是无限制等待,即当前线程永久暂停,直到其他线程调用 该对象notify()或 notifyAll()才能解除这种状态,不过由于它是在同步上下文中的,所以还要拿到同步锁才能从阻塞状态变为就绪状态,运行状态时还是从原有wait()下一行开始执行(为wait感到悲哀)

    3. sleep()不会释放对象锁(也意味在同步方法或同步块使用sleep方法,其他线程无法执行同步上下文的内容)

      wait()方法会放弃对象锁

    4. sleep()可以在任意地方使用

      wait()只能在同步上下文中使用(同步块或同步方法)

    PS:wait(),notify(),notifyAll()这三兄弟只能在同步上下文中使用。

    5. sleep是静态方法,作用于当前的执行的线程

     wait是实例方法,作用于当前的执行的线程(这一点很多人都说作用当前对象,我认为是错的,正确应该是当前的执行的线程会进入到等待持当中)

  • 相关阅读:
    Building a flexiable renderer
    Indirect Illumination in mental ray
    我的心情
    Cellular Automata
    Subsurface Scattering in mental ray
    Shader Types in mental ray
    BSP Traversal
    我的渲染器终于达到了MR的速度
    How to handle displacement and motion blur
    说明
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/13730255.html
Copyright © 2011-2022 走看看