C#面:Sleep() 和 Wait() 有什么区别

Sleep() 和 Wait() 是两个不同的方法,用于控制线程的执行。

Sleep() 方法:

是线程类 Thread 的静态方法,它使当前线程暂停执行一段时间。

Sleep() 方法接受一个参数,表示线程暂停的时间长度,单位是毫秒。

在暂停期间,线程不会释放锁资源。当暂停时间结束后,线程会重新进入就绪状态,等待 CPU 调度执行。

Sleep() 方法可以用于模拟一段时间的延迟操作。

Wait() 方法:

是 Object 类的实例方法,它使当前线程进入等待状态,直到其他线程调用相同对象的 Notify() 或 NotifyAll() 方法唤醒它。

Wait() 方法必须在同步代码块或同步方法中调用,并且会释放锁资源。当线程被唤醒后,它会重新竞争锁资源,并继续执行。

Wait() 方法通常与Notify() 或 NotifyAll() 方法配合使用,用于实现线程间的协作。(Notify:通知)

区别:

  1. Sleep() 是 Thread 线程类的方法,而 Wait() 是 Object 类的方法。
  2. Seep() 会暂停当前线程的执行一段时间,而 Wait() 会使当前线程进入等待状态。
  3. Sleep() 不会释放锁资源,而 Wait() 会释放锁资源。
  4. Sleep() 不需要被其他线程唤醒,而 Wait() 需要被其他线程调用相同对象的 Notify() 或 NotifyAll() 方法唤醒。

需要注意的是,Sleep() 和 Wait() 方法都可能抛出 InterruptedException 异常,需要进行异常处理。(Interrupted 英 ˌɪntəˈrʌptɪd:中断的)

相关推荐
m0_3807438712 小时前
为 OpenAI 兼容接口配置教程
开发语言·python·node.js
万邦科技Lafite13 小时前
阿里巴巴拍立淘按图搜索商品API返回值实践:提升用户购物满意度的关键措施
开发语言·api·开放api·电商开放平台·京东开放平台
李高钢14 小时前
REST vs gRPC 选型对比与迁移实践:从原理到落地
c#·集成·winforms
小小龙学IT14 小时前
Qt 6 跨平台开发完全指南:从信号槽机制到实际项目落地
开发语言·qt
leisoo809714 小时前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
敢敢のwings15 小时前
智元 GO-2 与 AgiBot-World 深度解读
开发语言·后端·golang
yaoxin52112315 小时前
503. Java 反射 - 编写 ServiceFactory 类
java·开发语言·python
一个帅气昵称啊15 小时前
.Net C# AI智能体开发-快速开始
开发语言·c#·.net
冬夜戏雪16 小时前
agent的trace 和eval
开发语言·前端·javascript
Sagittarius_A*16 小时前
Burst Lab | PHP 审计 13|反序列化(三):POP 链构造与 Gadget Chain 分析
开发语言·web安全·php·代码审计·反序列化