欢迎光临散文网 会员登陆 & 注册

【java面试题】java中wait和sleep有什么区别

2021-05-06 22:49 作者:夜雨658  | 我要投稿

sleep是使线程暂停执行一段时间的方法。

wait是使线程暂停执行的方法:当wait执行时,会释放锁,让出cpu执行权,进入等待状态,并且可以调用notify方法或者notifyAll方法,通知正在等待的其他线程

第一,原理不同:sleep时thread类的静态方法,是线程用来控制自身流程的,他会使此线程暂停执行一段时间,让出执行权,等时间一到,自动苏醒;而wait方法是object类中的方法。用于线程间的通信,这个方法会使得拥有对象锁的进程等待,直到其他线程调用notify方法或者notifyAll方法才能醒来,也可以指定时间让其醒来;

第二,对锁的处理机制不同;sleep方法主要作用是让线程暂停执行一段时间,时间一到自动恢复,不涉及线程的通信,因此不会释放锁,而wait方法会释放掉他所占用的锁,使得其他线程可以使用被锁住的共享数据;

第三,使用区域不同:wait方法必须放在同步控制方法和同步代码块中使用,sleep可以在任何地方使用,并且必须捕获异常,而wait不需要捕获异常。

【java面试题】java中wait和sleep有什么区别的评论 (共 条)

分享到微博请遵守国家法律