首页 > 试题广场 >

说说wait()和sleep()的区别

[问答题]
1. 所属的类型不同 - wt()是Object类的实例方法,调用该方法的线程将进入WTING状态。 - sleep()是Thread类的静态方法,调用该方法的线程将进入TIMED_WTING状态。 2. 对锁的依赖不同 - wt()依赖于synchronized锁,通过监视器进行调用,调用后线程会释放锁。 - sleep()不依赖于任何锁,所以在调用后它也不会释放锁。 3. 返回的条件不同 - 调用wt()进入等待状态的线程,需要由notify()/notifyAll()唤醒,从而返回。 - 调用sleep()进入超时等待的线程,需要在超时时间到达后自动返回。
发表于 2022-05-05 19:10:28 回复(1)

sleep方法是当前线程的休眠,让出cpu,但是不释放锁,它是Thread的静态方法;wait是当前线程等待,释放锁,是Object的方法。

Sleep没有释放锁,wait释放锁。 两者都可暂停线程的执行。 Wait用于线程间的通信,sleep用于暂停线程。 Wait等待过程不占用CPU,sleep仍然占用。 Wait调用后,需要别的线程调用同一个对象的notify方法。

发表于 2022-05-05 21:28:07 回复(1)
1.sleep()没有释放锁,使线程进入休眠状态,是Thread的静态方法。wait()释放锁,是Object方法 2.返回条件不同:sleep()方法到达时间后,自动恢复,而wait()方法需要使用notify()/notifyAll()唤醒线程。共同点:都可以使线程处于阻塞状态。
发表于 2022-06-19 22:44:42 回复(0)
所属的类型不同:所属的类型不同 - wt()是Object类的实例方法,调用该方法的线程将进入WTING状态。 - sleep()是Thread类的静态方法,调用该方法的线程将进入TIMED_WTING状态;对锁的依赖不同:wt()依赖于synchronized锁,它必须通过监视器进行调用,在调用后线程会释放锁。 - sleep()不依赖于任何锁,所以在调用后它也不会释放锁;返回的条件不同 - 调用wt()进入等待状态的线程,需要由notify()/notifyAll()唤醒,从而返回。 - 调用sleep()进入超时等待的线程,需要在超时时间到达后自动返回。
发表于 2022-05-08 13:35:35 回复(0)
1. 所属的类型不同
- sleep方法是当前线程的休眠,让出cpu,但是不释放锁,它是Thread的静态方法;
- wait是当前线程等待,释放锁,是Object的方法。
2.对锁的依赖不同
- wt()依赖于synchronized锁,通过监视器进行调用,调用后线程会释放锁。
- sleep()不依赖于任何锁,所以在调用后它也不会释放锁。
3.返回的条件不同
- 调用wt()进入等待状态的线程,需要由notify()/notifyAll()唤醒,从而返回。
- 调用sleep()进入超时等待的线程,需要在超时时间到达后自动返回。
编辑于 2023-02-25 16:22:51 回复(0)
1.wait()是Object类中的方法,sleep()是Thread类中的方法. 2.wait()会释放当前对象的锁进入等待,且需要Object类中的notify()/notifyAll()方法进行唤醒.sleep()不会释放锁进入等待,等待一定的时间后会自动唤醒,等待系统分配资源后进行操作,
发表于 2023-02-20 15:59:43 回复(0)
sleep是让当前线程休眠,不会让出锁,是Thread的静态方法,wait是让当前线程等待,会释放锁,是java提供的方法,skeep还会占用cpu wait不会占用cpu
发表于 2023-01-31 16:11:23 回复(0)
sleep :Thread类中的方法 释放cpu给其他线程 不释放锁资源 wait 属于Object类中的方法,释放cpu同时释放锁资源 需要notify 或者 notifyAll进行唤醒 wait方法必须配合synchronized一起
发表于 2023-10-28 21:34:19 回复(0)
sleep()没有释放锁,使线程进入休眠状态,是thread的静态方法。wait()释放锁,是object方法。2返回条件不同,sleep()方法到达时间后自动恢复,而wait()方法需要使用notify()notifyAll()唤醒线程。共同点:都可以使线程处于阻塞状态。
发表于 2023-09-01 20:10:04 回复(0)
wait:这个方***让线程进入等待状态,并且将锁释放,需要使用notify方法唤醒 sleep:让线程进入休眠,在这期间不会释放锁,不需要唤醒操作
发表于 2023-02-28 19:53:30 回复(0)
1.sleep()没有释放锁,使线程进入休眠状态,是Thread的静态方法。wait()释放锁,是Object方法 2.返回条件不同:sleep()方法到达时间后,自动恢复,而wait()方法需要使用notify()/notifyAll()唤醒线程。共同点:都可以使线程处于阻塞状态。
发表于 2022-11-05 14:36:25 回复(0)
sleep是Thread类中的静态方法,而wait是object类中的成员方法;sleep没有释放锁,而wait释放了锁,sleep可以在任意地方使用,wait只能在同步控制块或同步控制方法中使用
发表于 2022-09-13 15:50:51 回复(0)
- 作用位置不同:sleep可以作用在任意位置,wait必须在同步代码块中 - 唤醒条件不同:sleep会进入超时等待,一会自动唤醒,wait需要手动notify - 锁的处理不同:sleep不会释放锁,wait会释放锁 - 所属的类型不同:sleep是Thread类,wait是object
发表于 2022-08-10 12:07:41 回复(0)
1)所属类型不同:wait()是Object类的实例方法,调用该方法的线程将进入writing状态。sleep()是Thread类的静态方法,调用该方法的线程将进入timed_writing状态。 2)对锁的依赖不同:wait()依赖于synchronized锁,通过监控器进行调用,调用后线程会释放锁。sleep()不依赖于任何锁,所以在调用后它也不会释放锁。 3)返回的条件不同:调用wait()进入等待状态的线程,需要由notify()/notifyAll()唤醒,从而返回。调用sleep()进入超时等待的线程,需要在超时时间达到后自动返回。
发表于 2022-07-23 14:31:22 回复(0)
wait是object类的实例方法,而sleep属于thread类的实例方法。 两个方法声明的位置不同,wait可以在任意需要的场景下调用,而sleep只能在同步代码块或者同步方法肿。 如果两个方法都使用在同步代码块或者同步方法中,那么wait会释放锁,而sleep不会 释放锁。
发表于 2022-06-09 17:38:22 回复(1)
wait和sleep都会阻塞线程,wait会释放锁,sleep不会释放锁。
编辑于 2024-04-03 09:57:21 回复(0)
wait是Object类的方法,sleep是Thread的方法 ,wait使用会释放锁配合synchronized使用,sleep使用了需要配合notify 手动释放锁。
发表于 2024-04-02 15:26:31 回复(0)
wait方法是对象所拥有的即Object,使用以后线程的状态会进入Wating,而Sleep是线程的方法,调用该方***让线程进入Timed_waiting状态,wait方***释放锁,而sleep不会释放,在时间过后,等待cpu分配时间片,wait方法需要其他线程进行唤醒,而sleep方法在时间结束以后会自动执行
编辑于 2024-04-01 17:17:11 回复(0)
答: wait方法是Object类的实例方法,调用该方法的线程进入waiting状态。Sleep方法是Thread类的静态方法,调用该方法的线程进入Timed_waiting状态。 对锁的依赖不同,wait()依赖于synchronized锁,必须通过监视器调用,调用后线程释放锁。sleep不依赖任何锁,调用后也不会释放锁。 返回条件不同,wait后需要notify/notifyall方法唤醒。sleep后需要在超时时间到达后自动返回。
编辑于 2024-03-27 21:12:33 回复(0)
编辑于 2024-03-06 14:50:07 回复(0)