Java 有几种方法来执行某些操作。
方法是一组仅在被调用时运行的代码; 并且可能会也可能不会返回结果。
方法如 睡觉 和 wait 用于多线程。 它们都暂停并使线程进入等待状态,但在功能上有很大差异。
关键精华
- “睡眠”是一种身心不活动的休息状态,而“等待”则是停留在一个地方或延迟行动,直到特定事件发生。
- “睡眠”是一种自然而必要的身体机能,而“等待”是一种可以选择或避免的自愿行为。
- “睡眠”与夜间相关,而“等待”则可以发生在一天中的任何时间。
睡眠与等待
sleep()和wait()方法的区别在于,sleep()方法用于在程序中暂停当前线程的执行一段特定的时间,而wait()方法用于在程序中暂停执行或挂起当前线程,直到调用特定方法。
在使用 sleep 方法期间,当前线程不会失去监视器的所有权。
Sleep 是一个静态方法,是类线程的一部分。 等待时间结束后,线程回到原来的可运行状态。
它确保在等待时充分利用CPU。
而 wait() 方法用于 爪哇岛 程序命令当前线程等待,直到不再为该对象调用另一个线程。
一旦获得监视器的控制权,线程就会继续执行。
与 sleep 不同,它不是静态方法,并且是对象类的一部分。
对比表
比较参数 | 睡觉 | 稍等 |
---|---|---|
增益级 | 睡眠方法是线程类的一部分 | 等待方法是对象类的一部分 |
方法类型 | 睡眠是一个静态方法 | 等待不是静态方法 |
调用技巧 | 可以从同步上下文之外调用睡眠方法 | 只能从同步上下文调用 wait 方法 |
解锁 | Sleep 方法不释放对象上的锁,在指定的超时时间内,在同步期间 | 等待方法释放对象上的锁,以便有机会在同步期间执行 |
声明 | 公共静态无效睡眠() | 公共最终无效等待() |
什么是睡眠?
线程sleep()是Java程序中的一个静态方法,它挂起当前线程并使其处于等待状态一段规定的时间。
一旦等待状态和时间结束,线程状态就转为可运行状态。 然后等待CPU进一步执行。
此方法的目的是在程序中创建几秒钟的延迟,同时最大限度地利用 CPU。
如果系统繁忙或过载,则等待或暂停时间较长,否则,它将小于或等于实际时间。
sleep 方法的返回类型可以说是 void,因为它不返回任何值。
睡眠线程不会丢失监视器或锁定它已经获得的线程。
无论如何,如果睡眠受到干扰,线程将抛出 Interrupted_Exception。
实际上 为期 线程休眠的时间取决于操作系统的调度程序和系统计时器。
sleep方法的语法是 – public static void sleep(long milliseconds)
public static void sleep(长毫秒,int纳秒)
这里毫秒和纳秒是线程休眠的时间。
什么是等待?
Wait() 是一种用于线程间通信的方法。
每当使用 wait() 线程时,调用线程或当前线程都会暂停并挂起,直到系统中调用像 notify() 或 notifyAll() 这样的方法。
notify()方法会唤醒指定的线程,而notifyAll()方法适用于每个线程。
同步时,等待方法放弃对资源的锁定。
Wait方法没有返回值,可以说返回void。
Wait方法的两个异常是Interrupted_Exception(当当前线程在睡眠期间被中断时)和IllegalMonitorStateException(当当前线程不是监视器上对象的所有者时)。
Wait 方法是对象类的一部分。 该方法仅适用,并且可以通过同步块调用。
wait 方法在同步期间释放挂起或锁定的屏幕。
而Wait方法专门允许synchronized的多个线程一个一个访问同一个对象。
Wait 方法的语法是 – public final void wait()
睡眠和等待之间的主要区别
- Sleep 方法使线程休眠指定的特定时间段(指定的超时时间,除非过期或中断),而 Wait 方法使线程休眠,直到调用像notify() 或notifyAll() 这样的方法。
- Sleep 方法在线程上执行,而 Wait 方法在对象上执行。
- Sleep方法用于时间同步,而Wait方法用于多线程同步。
- 在Wait线程中,synchronized多个线程可以相邻访问同一个对象,而在Sleep线程中,synchronized多个线程必须等待当前线程的睡眠结束。
- Wait方法将锁或监视器设置为空闲,而Sleep方法在当前线程的睡眠或等待期间不会将监视器设置为空闲。
- https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
- https://dl.acm.org/doi/pdf/10.1145/289524.289572
最后更新时间:31 年 2023 月 XNUMX 日
Sandeep Bhandari 拥有塔帕尔大学计算机工程学士学位(2006 年)。 他在技术领域拥有 20 年的经验。 他对各种技术领域都有浓厚的兴趣,包括数据库系统、计算机网络和编程。 你可以在他的网站上阅读更多关于他的信息 生物页面.
本文有效地阐明了 sleep 和 wait 方法之间的差异,提供了清晰简洁的比较。同步和锁释放的细节特别有帮助。
这篇文章很好地描述了 sleep 和 wait 方法之间的差异。有关同步和锁释放的信息清晰、准确地呈现。
对睡眠和等待方法的详细解释非常好。对于任何想要加深对这些基本 Java 概念的理解的人来说,本文都是一笔宝贵的财富。
这是Java中sleep和wait方法的综合比较。本文清楚地概述了主要差异,并提供了有用的比较表供参考。
睡眠和等待方法的详细分解非常有见地。了解 Java 编程中这些方法的细微差别和功能非常有价值。
我发现睡眠和等待方法的解释内容丰富且准确。比较表对于总结这些方法的对比特征特别有帮助。
本文对 Java 中的 sleep 和 wait 方法进行了彻底的比较。我很欣赏详细的解释,它们提供了对其功能的宝贵见解。
我发现这篇文章内容丰富且精心制作。对sleep和wait方法的解释有利于更好地理解它们在Java中的用法和含义。
本文对 sleep 和 wait 方法进行了详细比较,全面了解它们在 Java 编程中的行为和功能。
本文是了解 Java 中的 sleep 和 wait 方法的宝贵资源。解释很详细,比较表为理解这些方法之间的差异提供了方便的参考。
我也有同样的感受,Vmorgan。比较表清晰地概述了差异,详细的描述增强了对睡眠和等待方法的理解。
感谢你的这篇文章。我很欣赏睡眠和等待方法之间差异的详细解释。清楚地了解它们在 Java 程序中的功能是有好处的。
您对这个概念的解释结构良好且易于理解。我同意明确这些基本方法至关重要。
本文详细解释了 sleep 和 wait 方法之间的区别。我发现同步期间等待方法的行为的解释特别有启发性。
我同意,芙蕾雅。本文对 wait 方法的行为提供了清晰、准确的解释,使您更容易理解其在 Java 中的功能。
本文对 sleep 和 wait 方法的行为和返回类型的描述信息量很大。了解这些差异对于 Java 中有效的多线程处理至关重要。
我发现这篇文章内容丰富且富有洞察力。对 sleep 和 wait 方法的深入分析极大地有助于理解它们在 Java 中的细微差别和含义。
文章对Java中的sleep和wait方法进行了全面的分析。这些解释组织良好,极大地有助于更深入地理解这些基本方法。