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

相关推荐
ᐇ9592 小时前
Java LinkedList集合全面解析:双向链表的艺术与实战
java·开发语言·链表
码银3 小时前
【数据结构】顺序表
java·开发语言·数据结构
追逐时光者3 小时前
一个基于 .NET 8 + DDD 搭建的模块化微服务框架
后端·.net
William_cl3 小时前
C# ASP.NET MVC 数据验证实战:View 层双保险(Html.ValidationMessageFor + jQuery Validate)
后端·c#·asp.net·mvc
Python私教3 小时前
Python 开发环境安装与配置全指南(2025版)
开发语言·python
百锦再3 小时前
第12章 测试编写
android·java·开发语言·python·rust·go·erlang
无敌最俊朗@3 小时前
C++ 并发与同步速查笔记(整理版)
开发语言·c++·算法
Elastic 中国社区官方博客4 小时前
Observability:适用于 PHP 的 OpenTelemetry:EDOT PHP 加入 OpenTelemetry 项目
大数据·开发语言·人工智能·elasticsearch·搜索引擎·全文检索·php
csbysj20204 小时前
PHP 魔术常量
开发语言