sleep和wait的区别

今天突然想起有道笔记有很多记录(都是18、19年)的笔记。准备从里面搬出来几个,扩充一下随笔数。O(∩_∩)O哈哈~
此文章是,自己的有道笔记,欢迎大佬斧正

sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行
注意:sleep方法只让出了CPU,而并不会释放同步资源锁);
wait()方法是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了notify()方法,之前调用wait()的线程才会接触wait状态,可以去参与竞争同步资源锁,进而得到执行。
注意:notify的作用相当于叫醒睡着的人,而并不会给他分配任务,就是说notify只是让之前调用wait的线程有权利重新参与线程的调用);

sleep()方法可以在任何地方使用;wait()方法只能在同步方法或同步代码块中使用;

sleep()是线程(Thread)的方法,调用会暂停此线程指定的时间,但监控依然保持,不会释放对象锁,到时间自动恢复;
wait()是Object的方法,调用会放弃对象锁,进入等待队列,待调用notify()/notifyAll()唤醒指定的线程或者所有线程,才会进入锁池,再次获得对象锁才会进入运行状态。



作者:cchilei

-------------------------------------------

个性签名:竹杖芒鞋轻胜马 一蓑烟雨任平生

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

原文地址:https://www.cnblogs.com/cchilei/p/13534145.html