sleep()和wait()的区别?

1、Thread.sleep()的作用是指定当前线程睡眠一定时间;obj.wait()是让拿到obj对象锁的那个线程进入等待状态,直到这个线程被obj.notifyAll()或obj.notify()唤醒,然后继续执行下面的代码。 其中:obj.notifyAll()是唤醒所有正在等待的线程;obj.notify()是唤醒其中一个正在等待的线程。

2、sleep()是Thread类的静态方法;wait()是Object类的实例方法。

3、wait()方法必须在同步代码块或同步方法中;而sleep()方法没有这个限制。

4、obj.wait()方法调用后会释放对象obj的锁,可以让其他线程获得obj的锁,并执行同步代码块或方法中的代码;sleep()方法调用后不会释放锁,只能沉睡指定时间后才能执行后面代码。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务