java面试题网

普通会员

108

帖子

11

回复

136

积分

楼主
发表于 2018-05-25 15:20:08 | 查看: 1268| 回复: 1

sleep() 方法是线程类(Thread)的静态方法,让调用线程进入睡眠状态,让出执行机会给其他线程,等到休眠时间结束后,线程进入就绪状态和其他线程一起竞争cpu的执行时间。  

wait()是Object类的方法,当一个线程执行到wait方法时,它就进入到一个和该对象相关的等待池,同时释放对象的机锁,使得其他线程能够访问,可以通过notify,notifyAll方法来唤醒等待的线程



普通会员

11

帖子

3

回复

27

积分
沙发
发表于 2018-11-12 15:34:57

sleep方法和wait方法的相同点和不同点?

相同点:

二者都可以让线程处于冻结状态。

不同点:

1)首先应该明确sleep方法是Thread类中定义的方法,而wait方法是Object类中定义的方法。

2)sleep方法必须人为地为其指定时间。

wait方法既可以指定时间,也可以不指定时间。

3)sleep方法时间到,线程处于临时阻塞状态或者运行状态。

wait方法如果没有被设置时间,就必须要通过notify或者notifyAll来唤醒。

4)sleep方法不一定非要定义在同步中。

wait方法必须定义在同步中。

5)当二者都定义在同步中时,

线程执行到sleep,不会释放锁。

线程执行到wait,会释放锁。

您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018