首页 > 试题广场 >

关于sleep和wait,以下描述错误的是

[单选题]
关于sleep和wait,以下描述错误的是
  • sleep是线程类的方法,wait是object的方法
  • sleep不释放对象锁,wait放弃对象锁
  • sleep暂停线程,但监控状态依然保持,结束后会自动恢复
  • wait进入等待锁定池,只有针对此对象发出notify方法获得对象锁进入运行状态
Java线程中根本没定义就绪状态啊 T_T
发表于 2018-07-26 19:03:33 回复(0)
调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备。
发表于 2016-04-03 17:30:07 回复(0)
炫头像
首先,sleep()是Thread类中的方法,而wait()则是Object类中的方法。

sleep()方法导致了程序暂停,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。
wait()方***导致线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
注意是准备获取对象锁进入运行状态,而不是立即获得
编辑于 2016-04-18 18:43:39 回复(4)
wait进入等待锁定池,只有针对此对象发出notify方法获得对象锁进入 “就绪” 状态.
发表于 2016-04-08 10:18:20 回复(10)
D选项最终是进入就绪状态,而不是运行状态。
发表于 2016-08-01 15:20:35 回复(3)
wait进入等待锁定池,只有针对此对象发出notify方法(或notifyAll)后线程才进入对象锁定池准备获得对象锁进入运行状态。

发表于 2016-03-24 14:05:07 回复(0)
A,B,C没有什么疑问,主要是D,从线程的创建开始说起,就知道D错在哪了。
首先,创建线程对象并调用start()方法,线程处于就绪状态,当线程获得CPU的青睐时,线程进入运行状态,此时,如果出现IO阻塞、等待通知(wait())等,线程失去CPU会进入阻塞状态,当完成IO操作、线程被通知(notify()),这时线程重新获得了CPU的眷顾,再次进入运行状态。答案不言自明,D项错在调用notify()方法之后进入运行状态,而是进入就绪状态。
发表于 2016-08-17 14:23:45 回复(1)
notify方法和notifyAll方法都可以
Thread.sleep()
对象.wait();

发表于 2016-08-17 15:30:50 回复(0)
notify后,只能notify所在的方法执行完,wait对象才会进入运行状态。
发表于 2016-07-23 11:20:03 回复(0)
sleep()方法是使线程暂停执行一段时间的方法。wait()也是一种使线程暂停执行的方法,例如,当线程交互时,如果线程对一个同步对象x发出一个wait()调用请求,那么该线程会暂停执行,被调对象进入等待状态,直至被唤醒或等待时间超时。
sleep方法与wait()方法的区别:
1.原理不同。sleep()方法是Thread类的静态方法,是线程用来控制自身流程的,它会使线程暂停执行一段时间,而把执行机会让给其他线程,等到计时时间一到,此线程会自动苏醒。而wait()方法是Object类的方法,用于线程之间的通信,这个方***使当前拥有该对象锁的进程等待,直到其他线程调用notify()方法(或notifyAll方法)时才会醒来,不过开发人员也可以给他指定一个时间,自动醒来
2.对锁的处理机制不同。sleep()方法主要作用是让线程暂停执行一段时间,时间一到则自动恢复,不涉及线程间的通信,因此调用sleep方法不会释放锁,而wait()方法不同,当调用wait()方法后,线程会释放掉它所占用的锁,从而使线程所在对象中的其他synchronized 数据可被别的线程使用。
3.使用区域不同,由于wait()方法的特殊意义,因此它必须放在同步控制方法或同步语句块中使用,而sleep方法则可以在任何地方使用。

发表于 2019-07-19 16:27:52 回复(0)
在同一个题目上栽了3次 我也是醉了..蠢哭
发表于 2019-04-13 19:25:29 回复(0)
线程总共有五个状态:分别是创建,就绪,运行,阻塞和死亡。当一个线程调用wait方法时,该线程处于阻塞状态,唤醒的方法是其他线程调用notify或者notifyAll方法,但这两种方法都不能是针对某一个具体的线程,没有唤醒指定线程这一说。
发表于 2018-12-05 10:52:03 回复(0)
这是Java的题目了吧?
发表于 2018-04-01 14:54:53 回复(0)
notify方法只能随机唤醒啊,针对也没用
发表于 2025-02-21 18:54:26 回复(0)
我认为错误最明显的应该是“只有针对该对象调用notify方法……”,如果wait方法有参数的话就不用了。
发表于 2019-10-12 10:48:09 回复(0)

Sleep属于线程方法就是。 wait 是Object的方法

Sleep不释放锁,时间到了之后进入就绪状态

wait释放自己的锁,wait需要被别的线程notify后才开始去抢对象锁,抢到后进入就绪状态,等到CPU为其划分时间片后才正式运行

发表于 2019-09-18 19:04:20 回复(0)
notify和notifyall不会释放锁,此时还是准备状态,只有运行完所在的业务逻辑才释放锁,进去运行状态
发表于 2019-08-03 16:07:52 回复(0)
Java线程的五大状态分别为:创建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Dead)。
发表于 2019-06-17 00:13:37 回复(0)
wait进入等待锁定池,只有针对此对象发出notify方法获得对象锁进入 “就绪” 状态.
发表于 2019-05-21 14:45:12 回复(0)

是准备状态,即有运行资格,但是不一定会马上运行

发表于 2019-05-14 19:51:55 回复(0)