首页 > 试题广场 >

下面关于wait()和sleep()两个方法描述错误的是()

[单选题]
下面关于wait()和sleep()两个方法描述错误的是()
  • wait()方法属于Object的方法,而sleep()方法属于Thread类的方法
  • wait()方法可以有参数,也可以无参数;
    sleep()方法必须要传入long的参数
  • 两个方法都需要InterruptedException异常处理
  • wait()无参方法调用后,线程阻塞。需要其他线程只能使用notify()方法才能唤醒。而sleep()可以在时间到后醒来继续运行
  • A、B、C选项:都可以见下图,wait()Object的方法,而sleep()方法属于Thread类的方法,而且sleep()方法必须传long型参数,它们都在方法上抛出InterruptedException异常
    图片说明 图片说明
编辑于 2020-08-08 16:34:12 回复(0)

1、sleep方法属于Thread类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。

wait()方法是Object类里的方法,当一个线程执行wait()方法时,它就进入到一个和该对象相关的等待池中(进入等待队列,也就是阻塞的一种,叫等待阻塞),同时释放对象锁,并让出CPU资源,待指定时间结束后返还得到对象锁。

2、sleep方法没有释放锁,而wait方法释放了锁
3、使用范围

wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用

4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
发表于 2020-04-11 17:16:19 回复(0)
wait还可以用notifyall唤醒
发表于 2020-01-17 19:28:46 回复(0)
所以C为啥不对?
发表于 2020-05-24 18:02:28 回复(2)
wait中的时间指的是到时间之后再等待
发表于 2020-02-22 11:04:12 回复(0)