ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Java中Sleep()与Wait()的异同

Java中Sleep()与Wait()的异同

原创 Linux操作系统 作者:zlich 时间:2008-06-30 11:48:57 0 删除 编辑
sleep()、suspend()、resume()方法不推荐使用,推荐使用wait()、notify()、notifyAll()。

    sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非
        (a)“醒来”的线程具有更高的优先级。 
  (b)正在运行的线程因为其它原因而阻塞。
 
   wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
     当调用wait()后,线程会释放掉它所占有的“锁标志”,从而使线程所在对象中的其它synchronized数据可被别的线程使用。
     waite()和notify()因为会对对象的“锁标志”进行操作,所以它们必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11704089/viewspace-366420/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-29

  • 博文量
    23
  • 访问量
    22683