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

相关推荐
雨落在了我的手上7 分钟前
初始java(十七):常⽤⼯具类介绍
java·开发语言
凤凰院凶涛QAQ17 分钟前
《Java版数据结构 & 集合类剖析》集合框架的封装设计与顺序表:“从 Iterable 到 ArrayList:集合框架的‘职业树“
java·开发语言·数据结构
多巴胺耐受27 分钟前
【WPF】炫酷的科技报警弹窗
科技·c#·wpf
孟华苏32 分钟前
怎么快速排查内存泄漏问题
java·开发语言·python
zz345729811333 分钟前
C语言中字符串常量存储位置
c语言·开发语言·算法·青少年编程
noipp34 分钟前
推荐题目:洛谷 P16510 [GKS 2015 #C] gRanks
java·c语言·开发语言·c++·python·算法
flyinmind34 分钟前
Java环境与Android环境中使用QuickJS
java·开发语言·javascript·quickjs
郑洁文35 分钟前
基于Python的HTTP服务漏洞信息收集工具设计与实现
开发语言·python·http
不吃鱼的羊36 分钟前
DaVinci Developer自动连接
java·开发语言
Evand J39 分钟前
【MATLAB例程】VSIMM与IMM在机动目标跟踪中的性能对比,CV+CT双模型
开发语言·matlab·目标跟踪