Java中wait()方法和sleep()区别

wait()方法通常用于线程通信,结合notify()或者notifyAll()使用。

sleep()方法属于Thread类中的一个方法,表示一个线程进入睡眠状态,等一段时间自动进入RUNABLE状态,然后等待分配时间片即可。


区别在于:

1、wait方法是Object类中的方法,是从一个对象调用(称为锁定对象),而不是从一个线程调用。sleep方法是Thread类中的一个方法

2、wait方法只能用在同步方法或者同步代码块上,sleep方法可以在任何地方使用。

3、wait会释放当前线程所持有的对象的锁,其他线程可以访问该对象的synchronized代码块或者synchronized同步方法。sleep方法不会释放锁,而是等待经过指定的时间之后,再次进入RUNABLE状态,等待时间片分到该线程的时候,该线程再RUN起来

4、sleep方法可以在任何地方使用,但是wait方法只能在synchronized同步方法或者同步代码块中使用。

5、sleep方法到了指定的时间自己启动(但是要等待时间片),wait()之后想要启动的话需要调用notify()或者notifyAll()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值