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]:中断的)

相关推荐
趙卋傑2 分钟前
测试开发场景下常见的 MCP 服务
开发语言·python·测试工具·ai编程
@atweiwei2 分钟前
langchainrust:Rust 版 LangChain 框架(LLM+Agent+RAG)
开发语言·rust·langchain·agent·向量数据库·rag
阿里嘎多学长4 分钟前
2026-04-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yugi9878385 分钟前
基于最大信息熵的粒子群优化算法图像分割(MATLAB实现)
开发语言·算法·matlab
yaoxin5211235 分钟前
376. Java IO API - 使用 Globbing 和自定义 Filter 过滤目录内容
java·开发语言·python
无风听海12 分钟前
.NET10之内置日志配置与使用指南
asp.net·.net
飞翔的SA13 分钟前
全程 Python:无需离开 Python 即可实现光速级 CUDA 加速,无需c++支持
开发语言·c++·python·nvidia·cuda
冰暮流星20 分钟前
javascript之dom访问css
开发语言·javascript·css
北风toto20 分钟前
java进制转换方法
java·开发语言·python
楼田莉子27 分钟前
设计模式:创建型设计模式简介
服务器·开发语言·c++·设计模式