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

来源:互联网 发布:树莓派python编程 编辑:程序博客网 时间:2024/06/04 18:02

最近由于换工作,在多线程这一块被很多大佬虐得遍体是伤怀疑自我。

进入正题,关于java中sleep()和wait()区别主要如下:

1、若对象资源被同步或锁住,sleep()方法会主动让出cpu,然后cpu可以去执行其他任务,直到sleep()方法给定的时间截止,然后cpu会重新回到该线程继续向下执行。但sleep()并不会释放锁或让出同步资源。wait()方法会让当前线程暂时让出同步资源,以便其他正在等待的线程获取资源。而调用wait()方法的线程必须调用notify()方法才能接触wait()状态,让线程参与同步资源的竞争。(并不会直接获得同步资源,而是参与线程调度,拥有竞争同步资源的资格)。

2、sleep()方法是可以在任意地方使用的,而wait()只能在同步代码块或同步方法中使用。

3、sleep()方法是Thread类的方法,而wait()方法是Object()的方法。

原创粉丝点击