sleep()和wait()方法的区别有哪些?
2018-03-12 13:41
741 查看
答:以下几点:sleep是Thread类的方法,wait是Object类的方法。
sleep可以用在任意方法中,wait只能用在同步方法或同步块中。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sleep不出让系统资源。wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。sleep需要捕获异常,而wait不需要。
sleep可以用在任意方法中,wait只能用在同步方法或同步块中。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sleep不出让系统资源。wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。sleep需要捕获异常,而wait不需要。
相关文章推荐
- JAVA线程sleep和wait方法区别
- java 中的 wait()方法和 sleep()方法的区别是什么?
- sleep()、wait()、yield()和join()方法特点及区别
- 关于java中wait()和sleep()方法间的区别
- java.lang.Thread sleep(),wait()方法的区别。
- wait()方法和 sleep()方法的区别是什么?
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- sleep方法和wait方法的区别?
- wait方法和sleep方法的区别
- java 中的 wait()方法和 sleep()方法的区别是什么?
- sleep()和wait()方法的区别
- 线程中sleep方法和wait方法有什么区别?
- 浅谈Java多线程中的Thread.sleep()和wait()方法的区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- 线程系列4---sleep()和wait()方法区别
- Java中wait和sleep方法的区别
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- java线程中sleep与wait方法的区别
- 多线程 -- sleep()方法和wait()方法区别
- java 中的 wait()方法和 sleep()方法的区别