首页 > 试题广场 >

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

[单选题]

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

  • sleep是线程类(Thread)的方法,wait是Object类的方法;
  • sleep不释放对象锁,wait放弃对象锁
  • sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
  • wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态。
如果线程调用了对象的 wait()方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁。 
当有线程调用了对象的 notifyAll()方法(唤醒所有 wait 线程)或 notify()方法(只随机唤醒一个 wait 线程),被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去竞争该对象锁。 
优先级高的线程竞争到对象锁的概率大,假若某线程没有竞争到该对象锁,它还会留在锁池中,唯有线程再次调用 wait()方法,它才会重新回到等待池中。而竞争到对象锁的线程则继续往下执行,直到执行完了 synchronized 代码块,它会释放掉该对象锁,这时锁池中的线程会继续竞争该对象锁。

注:wait() ,notifyAll(),notify() 三个方法都是Object类中的方法.

发表于 2019-01-03 22:04:55 回复(0)
 notifyall针对所有对象。
                                                                                    
发表于 2018-12-17 13:40:40 回复(0)
obj.notifyAll方法唤醒obj对象锁的等待队列的所有线程(waiting->blocked), 线程唤醒后获得锁进入运行状态(blocked-->runnable-->running)
发表于 2020-02-13 13:21:21 回复(0)