问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

线程的基本状态以及状态之间的关系?

发布网友 发布时间:2022-05-07 07:13

我来回答

1个回答

热心网友 时间:2023-10-20 12:04

Thread.ThreadState 属性提供一个位掩码,用它指示线程的当前状态。一个线程至少总是处于 ThreadState 枚举中一个可能状态,并且可以同时处于多个状态。

在创建托管线程时,该线程处于 Unstarted 状态中。线程将始终保持在 Unstarted 状态中,直到通过调用 Thread.Start 将其移动到已启动状态。进入托管环境的非托管线程已经处于已启动状态中。一旦处于已启动状态中,就可以执行许多操作来使线程更改状态。下表列出使状态发生更改的操作以及相应的新状态。

操作 所得到的新状态
另一个线程调用 Thread.Start。 Unchanged
线程响应 Thread.Start 并开始运行。 Running
线程调用 Thread.Sleep。 WaitSleepJoin
线程对另一个对象调用 Monitor.Wait。 WaitSleepJoin
线程对另一个线程调用 Thread.Join。 WaitSleepJoin
另一个线程调用 Thread.Suspend。 SuspendRequested
线程响应 Thread.Suspend 请求。 Suspended
另一个线程调用 Thread.Resume。 Running
另一个线程调用 Thread.Interrupt。 Running
另一个线程调用 Thread.Abort。 AbortRequested
线程响应 Thread.Abort。 Aborted

由于 Running 状态的值为 0,因此不可能执行位测试来发现该状态。但可以使用以下测试(以伪代码表示)。

if ((state & (Unstarted | Stopped)) == 0) // implies Running
在任何给定时间,线程通常处于多个状态中。例如,如果某个线程在 Wait 调用阻塞并且另一个线程对该同一线程调用 Abort,则该线程将同时处于 WaitSleepJoin 和 AbortRequested 状态中。在这种情况下,一旦该线程从对 Wait 的调用返回或被中断,则它将收到 ThreadAbortException。

一旦线程由于调用 Thread.Start 而离开 Unstarted 状态,则它将永远无法返回到 Unstarted 状态。同样,线程也永远无法离开 Stopped 状态。

参考资料:msdn NET Framework 开发员指南

热心网友 时间:2023-10-20 12:04

Thread.ThreadState 属性提供一个位掩码,用它指示线程的当前状态。一个线程至少总是处于 ThreadState 枚举中一个可能状态,并且可以同时处于多个状态。

在创建托管线程时,该线程处于 Unstarted 状态中。线程将始终保持在 Unstarted 状态中,直到通过调用 Thread.Start 将其移动到已启动状态。进入托管环境的非托管线程已经处于已启动状态中。一旦处于已启动状态中,就可以执行许多操作来使线程更改状态。下表列出使状态发生更改的操作以及相应的新状态。

操作 所得到的新状态
另一个线程调用 Thread.Start。 Unchanged
线程响应 Thread.Start 并开始运行。 Running
线程调用 Thread.Sleep。 WaitSleepJoin
线程对另一个对象调用 Monitor.Wait。 WaitSleepJoin
线程对另一个线程调用 Thread.Join。 WaitSleepJoin
另一个线程调用 Thread.Suspend。 SuspendRequested
线程响应 Thread.Suspend 请求。 Suspended
另一个线程调用 Thread.Resume。 Running
另一个线程调用 Thread.Interrupt。 Running
另一个线程调用 Thread.Abort。 AbortRequested
线程响应 Thread.Abort。 Aborted

由于 Running 状态的值为 0,因此不可能执行位测试来发现该状态。但可以使用以下测试(以伪代码表示)。

if ((state & (Unstarted | Stopped)) == 0) // implies Running
在任何给定时间,线程通常处于多个状态中。例如,如果某个线程在 Wait 调用阻塞并且另一个线程对该同一线程调用 Abort,则该线程将同时处于 WaitSleepJoin 和 AbortRequested 状态中。在这种情况下,一旦该线程从对 Wait 的调用返回或被中断,则它将收到 ThreadAbortException。

一旦线程由于调用 Thread.Start 而离开 Unstarted 状态,则它将永远无法返回到 Unstarted 状态。同样,线程也永远无法离开 Stopped 状态。

参考资料:msdn NET Framework 开发员指南

热心网友 时间:2023-10-20 12:04

Thread.ThreadState 属性提供一个位掩码,用它指示线程的当前状态。一个线程至少总是处于 ThreadState 枚举中一个可能状态,并且可以同时处于多个状态。

在创建托管线程时,该线程处于 Unstarted 状态中。线程将始终保持在 Unstarted 状态中,直到通过调用 Thread.Start 将其移动到已启动状态。进入托管环境的非托管线程已经处于已启动状态中。一旦处于已启动状态中,就可以执行许多操作来使线程更改状态。下表列出使状态发生更改的操作以及相应的新状态。

操作 所得到的新状态
另一个线程调用 Thread.Start。 Unchanged
线程响应 Thread.Start 并开始运行。 Running
线程调用 Thread.Sleep。 WaitSleepJoin
线程对另一个对象调用 Monitor.Wait。 WaitSleepJoin
线程对另一个线程调用 Thread.Join。 WaitSleepJoin
另一个线程调用 Thread.Suspend。 SuspendRequested
线程响应 Thread.Suspend 请求。 Suspended
另一个线程调用 Thread.Resume。 Running
另一个线程调用 Thread.Interrupt。 Running
另一个线程调用 Thread.Abort。 AbortRequested
线程响应 Thread.Abort。 Aborted

由于 Running 状态的值为 0,因此不可能执行位测试来发现该状态。但可以使用以下测试(以伪代码表示)。

if ((state & (Unstarted | Stopped)) == 0) // implies Running
在任何给定时间,线程通常处于多个状态中。例如,如果某个线程在 Wait 调用阻塞并且另一个线程对该同一线程调用 Abort,则该线程将同时处于 WaitSleepJoin 和 AbortRequested 状态中。在这种情况下,一旦该线程从对 Wait 的调用返回或被中断,则它将收到 ThreadAbortException。

一旦线程由于调用 Thread.Start 而离开 Unstarted 状态,则它将永远无法返回到 Unstarted 状态。同样,线程也永远无法离开 Stopped 状态。

参考资料:msdn NET Framework 开发员指南

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年四川570分能考上什么大学? 2024年四川文科560分能考上什么大学? 2024年广东561分能考上什么大学? 2024年江苏历史类561分能考上什么大学? 在形ABC中,角A.B.C所对的边分别为a.b.c,且acosB+bcosA=2c cos 求... ...B、C的对边分别为a、b、c,已知acosB+bcosA=2(bcosC+ccosB).(1... ...b、c的对边分别为a、b、c,且acosb+bcosa=2cosc 在△ ABC中,角A、B、C所对的边分别为a、b、c,已知b=cosA,c=2cosB,试... 在△ABC中,角A,B,C所对的边分别为a,b,c,且满足bcosA+acosB=2ccosC,△... ...对应的边分别为a、b、c,且满足aCOSB+bcosA=2cCOSC... 移动积分怎么兑 中国移动积分可以兑换优酷会员吗 Win32 API 编程 跟 windows编程有什么区别? 盐水制霜是什么物态变化? 2022疫情摩洛哥迪拉姆兑换人民币困难吗 糖酥饼烤箱的做法 睡觉前吃苹果,喝牛奶和吃面包对人体有什么危害 天天吃面包有什么危害? 睡前可以吃面包吗 怎样在同一部手机上用两个微信!怎么才能下载另一个! 每天晚上只吃面包水果和牛奶对身体害处大吗? 因为高三了,每天晚上其实都没什么胃口,又不想出去吃饭 怎样在同一部手机上用两个微信!怎么才能下载另一个! 当衣服内线开了的时候怎样缝补? 衣服开线了,内线怎么缝? Windows运行时API 与 Win32和COM API有什么区别 介绍他人的礼仪? 他人介绍的礼节有哪些原则? 什么是介绍他人的礼仪? 椭圆形扣子+怎样用机器订 请问,制作服装时,衣服布料上扣扣子用的扣子孔是怎么裁剪开的?有没有专用的机器来开这种孔? 不是严禁银行贷款买股票吗 眼纹、眼袋怎么去?? 用什么方法去下眼纹和眼袋 怎么祛眼袋眼纹 如何去掉眼袋和眼部细纹? 蚊子是害虫,但是不可或缺,蚊子到底有什么作用? 蚊子有什么好处? 欠款不还的诉讼时效是长? 蚊子在地球上究竟有什么作用?如果将其全部灭绝,会产生什么后果? 借款期限到期,但一直在摧还款,请问诉讼时效可以延长吗? 蚊子这个生物在地球上有什么用? 蚊子在地球上有什么作用?地球灭绝了它会不会跟着消失? 蚊子在地球上起了什么作用?为什么不消灭它? 蚊子的所有好处 蚊子这种生物在地球上有什么用? 蚊子的作用? 蚊子的作用 电脑什么都打不开也关不了机怎么办 我的电脑刷新可以,但是打不开网页,关机也关不了了,怎么回事 电脑老是突然死机,鼠标可以用,但是打不开各种图标和网页,关机也关不起,这问题该如何处理?