new一个线程,是不是线程代码执行完毕,线程就自动结束了?

ooolinux 2017-11-29 06:58:46
new一个线程,是不是线程代码执行完毕,线程就自动结束了?
如果myThread执行结束,是IsAlive变了,还是myThread变为null了?
...全文
5758 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2017-11-30
  • 打赏
  • 举报
回复
@daixf_csdn @From_TaiWan @xuzuning @duanzi_peng 谢谢,应该明白了。
  • 打赏
  • 举报
回复 1
线程会自动销毁自己,或者显示的Abort结束线程。线程自己足够聪明的,没有调度任务时就待在线程池里,直到有任务分配过来或者时间长了就销毁自己。我们在调试程序时,经常会看到输出窗口中有类似:线程 0x2a98 已退出,返回值为 0 (0x0)。 0x2a98 表示线程Id值,至于IsAlive 楼上已经解释了。 PS:个人观点,欢迎指正。
xuzuning 2017-11-30
  • 打赏
  • 举报
回复 1
Thread.IsAlive属性 ,表示该线程当前是否为可用状态,只可能是 true 或 false 但 IsAlive 为假,并不一定表示线程结束,也可能是尚未开始工作,或正被其他线程中断 myThread 对象依然存在,可再次 myThread.Start()
秋的红果实 2017-11-30
  • 打赏
  • 举报
回复
1)办完事的线程,自然结束 2)isAlive是false,但是不是null,要看GC何时回收了
ooolinux 2017-11-30
  • 打赏
  • 举报
回复
@closurer ok,应该是的。
闭包客 2017-11-30
  • 打赏
  • 举报
回复
这个……变量是没有把自己设置为 null 的能力的。
圣殿骑士18 2017-11-29
  • 打赏
  • 举报
回复 1
new一个线程,是不是线程代码执行完毕,线程就自动结束了? ----是的。 如果myThread执行结束,是IsAlive变了,还是myThread变为null了? ------改变IsAlive。myThread的生命周期看其作用域,如果是方法内定义的就是方法结束后回收,对象级别的就是随对象一起回收。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧