sleep和wait的区别

转载 2013年12月04日 16:50:08

转载自http://www.cnblogs.com/plmnko/archive/2010/10/15/1851854.html

 

1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。


2、最主要sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。


3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 
   synchronized(x){ 
      x.notify() 
     //或者wait() 
   }


4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

Java常见面试题

1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还...
  • shineflowers
  • shineflowers
  • 2014年10月13日 16:41
  • 44941

浅谈sleep方法和wait方法的异同

浅谈sleep方法和wait方法的异同     在我学到多线程技术这里时,感到sleep方法和wait方法二者给我造成了一些困惑,所以我在此将二者小小地总结 一下,希望对大家有所帮助。   ...
  • u013035237
  • u013035237
  • 2015年04月06日 19:52
  • 2965

sleep和wait区别

1、sleep()方法     sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;     s...
  • paincupid
  • paincupid
  • 2015年08月11日 12:06
  • 2085

sleep和wait有什么区别

1、这两个方法来自不同的类分别是Thread和Object   2、最主要是sleep方法没有释放锁,而 wait 方法释放了锁,使得其他线程可以使用同步控制块或者方法。   3、wait...
  • xusongsong520
  • xusongsong520
  • 2013年02月22日 13:50
  • 12865

java 中的 wait()方法和 sleep()方法的区别

sleep()和wait()的区别 Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只...
  • liuguangqiang
  • liuguangqiang
  • 2015年10月16日 16:23
  • 7699

线程中sleep()和wait()的区别

Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是实际运行过程中,只有一个线程可以优先运行。 共同点:  1、他们都是在多线程的环境下,都可以在程序...
  • u014704415
  • u014704415
  • 2016年06月08日 10:58
  • 2663

java 中的sleep()和wait() 等的区别和详解

1、sleep()  使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该...
  • u011974987
  • u011974987
  • 2016年11月08日 22:48
  • 1760

sleep函数的精度 不精确

Qt 线程暂停使用sleep 是本文要介绍的内容,关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继...
  • zhangbinsijifeng
  • zhangbinsijifeng
  • 2016年05月12日 10:50
  • 1092

sleep和wait有什么区别

1、这两个方法来自不同的类分别是Thread和Object   2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。   3、wait,notif...
  • u010866487
  • u010866487
  • 2014年06月12日 18:28
  • 1404

面试总结(3):线程(Thread)的同步以及sleep() 、wait()的区别

前言这几天忙一点私事,今天回来赶紧把面试总结接着写下去,这次来看看Thread的join()方法和sleep()和wait()方法的区别。正文 线程同步上一篇提到了线程同步的问题,主要是通过锁的形式来...
  • u011315960
  • u011315960
  • 2017年04月24日 14:46
  • 464
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sleep和wait的区别
举报原因:
原因补充:

(最多只允许输入30个字)