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

相关推荐
6.9410 分钟前
Scala学习记录 递归调用 练习
开发语言·学习·scala
FF在路上32 分钟前
Knife4j调试实体类传参扁平化模式修改:default-flat-param-object: true
java·开发语言
VinciYan1 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
码农君莫笑1 小时前
使用blazor开发信息管理系统的应用场景
数据库·信息可视化·c#·.net·visual studio
众拾达人1 小时前
Android自动化测试实战 Java篇 主流工具 框架 脚本
android·java·开发语言
皓木.1 小时前
Mybatis-Plus
java·开发语言
不良人天码星1 小时前
lombok插件不生效
java·开发语言·intellij-idea
源码哥_博纳软云2 小时前
JAVA同城服务场馆门店预约系统支持H5小程序APP源码
java·开发语言·微信小程序·小程序·微信公众平台
学会沉淀。2 小时前
Docker学习
java·开发语言·学习