java中wait和sleep的区别是啥?

如题所述

第1个回答  2024-04-23
1. yield方法与sleep方法的不同之处在于,yield会临时暂停当前执行的线程,以便让相同优先级的等待线程有机会运行。如果没有等待的线程,或者所有等待线程的优先级较低,那么该线程将继续执行。yield方法的线程何时恢复执行由线程调度器决定,不同供应商可能会有不同的行为。yield方法不保证线程会暂停,但它确保线程在调用yield时会放弃CPU。
2. Java中的wait和sleep方法是面试或多线程讨论中的常见问题。sleep和yield方法定义在Thread类中,而wait方法定义在Object类中,这也是面试中常问的问题。
3. wait和sleep的主要区别在于,wait是用于线程间通信的,而sleep是用于暂时停止当前线程的。一个明显的区别是,当线程调用wait方法时,它会释放它所持有的对象的监视器和锁,但调用sleep()方法时,它不会释放锁。
4. 与wait和sleep方法相比,yield()方法仅释放线程的CPU资源,从而让其他线程有机会运行,但它不能保证特定线程获得CPU资源。线程获得CPU资源完全取决于调度器,在某些情况下,调用yield方法的线程可能会再次获得CPU资源。因此,依赖yield方法是不可靠的,它只能尽力而为。
来源:百度百科--Java编程语言详情
相似回答
大家正在搜