java sleep和wait的区别的疑惑?
1个回答
2020-06-17 · 提供山东公务员、事业编、教师招聘考试咨询
关注
展开全部
1、sleep是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.
2、而wait,首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说"暂停!",也是 thisOBJ.wait,这里的暂停是阻塞
3、区别:
1)这两个方法来自不同的类分别是Thread和Object
2)最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3)wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4)sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
2、而wait,首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说"暂停!",也是 thisOBJ.wait,这里的暂停是阻塞
3、区别:
1)这两个方法来自不同的类分别是Thread和Object
2)最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3)wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4)sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询