本文主要是介绍线程的wait和sleep方法的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一、sleep和wait方法来自的不同的类
二、有没有释放资源
三、使用范围不一样
四、对于异常的捕获
一、sleep和wait方法来自的不同的类
sleep是Thread类中的静态方法,wait是Object的方法。sleep就是谁调用谁就睡眠,线程a调用了线程b的sleep方法,也是a线程进行睡眠。
二、有没有释放资源
sleep方法不会释放资源。可以设置睡眠时间,在指定时间后自动唤醒,如果时间还未到可以使用interrupt()来强行打断。
wait方法会释放资源,是其他线程可以使用同步代码块或者方法。wait一般不设置等待时间,因为wait线程的运行资源不够,在执行该线程也无用,需要其他线程通过notify或notifyAll(notify和notifyAll的区别)来是唤醒该线程,才会将线程放进就绪队列,等待操作系统分配系统资源。
三、使用范围不一样
sleep可以在任何地方进行使用。
wait和与其相匹配的notify和notifyAll只能在同步方法同步代码块里面使用。
四、对于异常的捕获
sleep是受查异常(需要显示抛出InterruptedException,交由调用者处理),异常需要进行捕获。
wait是不受查异常,异常不需要捕获
参考文章
这篇关于线程的wait和sleep方法的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!