是否需要实例化 方法 说明
是 Start 使线程开始执行
是 Suspend 当线程到达一个安全点时暂停线程
是 Abort 当线程到达一个安全点时停止线程
是 Resume 恢复一个被挂起的线程
是 Join 等待一个线程结束
?/td> Interrupt 中断一个处于 WaitSleepJoin 状态的线程
否 Sleep 在指定的时间内暂停调用线程
否 SpinWait 通过空转来延迟线程的执行,在此过程中,线程仍然在执行,这好比创建了一个不断运行直到计数器用完为止的循环一样。
上表中,安全点是指代码中 CLR 可以安全执行自动垃圾回收的位置。
下面我们来对Sleep 和 Join 给予额外的说明:
1、 Thread.Sleep 当线程处于 Running 状态时,加入收藏 它可以调用 Sleep 方法。
Sleep 方法有两种不同的用法:
'放弃线程的执行
'通过指定一个 Integer 类型的数值作为时间参数(毫秒)
'或TimeSpan(类型的参数) 使当前线程
'进入 WaitJoinSleep 状态
Thread.Sleep(1000)
Thread.Sleep( New TimeSpan(0, 0, 0, 0, 100))
'放弃线程的执行
'不要使当前线程进入 WaitJoinSleep 状态
'把时间片让给其它线程
'通过指定参数 0 或 TimeSpan.Zero
Thread.Sleep(0)
Thread.Sleep(TimeSpan.Zero)
2、 Thread.Join
Join 方法是我们可以使用的最简单的同步构造,在一个线程上调用 Join 方法时,调用线程会进入 WaitJoinSleep 状态,而且将一直保持到被调用的线程已经结束,这将允许线程阻塞执行,挂起到系统中其它线程的完成。请看如下示例:
Sub Main()
Dim thd1 As New Thread( AddressOf Sub1)
Dim thd2 As New Thread( AddressOf Sub2)
thd1.Start()
thd2.Start()
'等待上面两个线程结束
thd1.Join()
thd2.Join()
'这时,可以保证两个线程都已经结束
End Sub
现在我们对线程的控制方法已经明白了,那么我们如何将这些知识应用到实践中呢?我们可能都遇到过这种情况:
Private Done As Boolean = False
Public Sub Begin()
While Not Done
End While
Console.WriteLine( "Done, OK!" )
End Sub
这种做法,可能你我以前都用过,很明显,它会给系统带来非常沉重的负担。现在,我们可以利用 Thread.Sleep 方法来改善上述状况:
Private Done As Boolean = False
Public Sub Begin()
While Not Done
Thread.Sleep(1000)
End While
Console.WriteLine( "Done, OK!" )
End Sub
对比一下,仅仅加了一条语句,却使代码性能大大提升。当然,这个例子不过是冰山一角。 下一节,我们将会了解线程同步。
本文来自 280文秘网(https://www.it280.com),转载请保留网址和出处
【VB.NET中多线程程序开发之线程控制】相关文章:
2025年外省高中学业水平合格性考试成绩转入江苏认定的通告公布03-23
Vb中控件的自动排列03-23
中国大地保险公司实习报告03-23
2018国家电网新大纲财会类市场模拟卷多选题(二)03-23
07年4月北师大“中国古代文学史(一)”串讲(5)03-23
2023年广东梅州中考成绩查询时间及查分入口[7月7日起]03-23
儿童舞蹈教程:国标新手上路03-23
2024年江苏中级导游等级考试准考证打印时间及入口(11月18日9:00起)03-23
盐阜大众报报业集团(盐城)公开招聘《东方生活报》编辑记者的公告 2月25日到3月3日报名03-23
浅析助学贷款对经济发展的正向影响03-23
