首页 > 试题广场 >

关于sleep()和wait(),以下描述错误的一项是

[单选题]
关于sleep()和wait(),以下描述错误的一项是
  • sleep是线程类(Thread)的方法,wait是Object类的方法;
  • sleep不释放对象锁,wait放弃对象锁;
  • sleep暂停线程、但监控状态仍然保持,结束后会自动恢复;
  • wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
发表于 2018-08-14 15:58:21 回复(1)

sleep() 和 wait() 有什么区别?

  • 类的不同:sleep() 来⾃ Thread,wait() 来⾃ Object。
  • 释放锁:sleep() 不释放锁;wait() 释放锁。
  • ⽤法不同:sleep() 时间到会⾃动恢复;wait() 可以使用 notify()/notifyAll()直接唤醒。

notify()和 notifyAll()有什么区别?

notifyAll()会唤醒所有的线程,notify()之后唤醒⼀个线程。notifyAll() 调⽤后,会将全部线程由等待池移到锁池,然后参与锁的竞争,竞争成功则继续执⾏,如果不成功则留在锁池等待锁被释放后再次参与竞争。⽽ notify()只会唤醒⼀个线程,具体唤醒哪⼀个线程由虚拟机控制。

编辑于 2019-08-25 23:26:16 回复(0)
wait后进入等待锁定池,只有针对此对象发出notify或者是notifAll方法后获得对象锁进入就绪状态
发表于 2018-09-02 21:44:30 回复(0)
我记得wait()方法带参数也能自己恢复,不需要notify()。比如wait(1000),就是一秒后恢复。
发表于 2020-06-21 12:38:58 回复(0)