VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > vb >
  • vb.net 教程 6-5 多线程 基本概念

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
 
关于多线程,我个人的理解:
 
1、关于多线程
windows系统上的程序运行时必须要有一个进程,而每个进程至少有一个线程。每个程序都开始于一个单独的线程,通常被称为主线程。
举个例子理解多线程:
一个关于猫科动物的研究报告,需要观测猫、老虎、狮子、豹子,
张三一个人把所有内容写完,那么在程序中可以将研究报告项目看作程序,做这个研究工作看成进程,张三干的相当于一个线程,也就是个单线程任务;
现在有李四负责完成猫和老虎的研究工作,王五负责完成狮子、豹子的研究工作,张三在研究中起到总领全局的作用,那么张三相当于是主线程,李四、王五相当于其他的线程,这几个线程可以同时进行工作,大大提高了工作效率。
 
要深入理解多线程,还得学习cpu时间片相关知识,cpu的运行时间被划分为了很多很小的时间片,分配给每个线程的时间都很短,看上去所有线程都是同时运行。
 
2、多线程的优点: 
提高了系统对用户的响应, 
提高CPU的利用率
 
大家可以尝试使用以下代码,将会发现当按下按钮时,拖动不了窗体,直到代码计算完结果。
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
        Dim sum As Int64
        For i As Int64 = 1 To 1000000000
            sum += i
        Next
        TextBox1.Text = sum.ToString
    End Sub
 
 
3、多线程的缺点:
线程也要占用cpu和内存资源,同时用的线程越多,资源占用越大
太多的线程需要更多的管理和协调,否则造成线程死锁和程序崩溃
同时启用多个线程时,线程启动的先后顺序是不受控制的
 
4、何时用多线程?
执行占用大量时间的操作时(比如网络数据读写,有可能会因为带宽小而很慢),同时需要UI界面不“死机”
 
如果理解了以上信息,你确定你的程序中需要多线程,那么我们继续学习。
 
.net代码主要使用了Thread类对线程进行操作,在使用时,需要引用System.Threading命名空间:
Imports System.Threading
 
Thread类常用属性:
IsAlive:获取指示当前线程的执行状态的值。 
IsBackground:获取或设置某个线程是否为后台线程。 
ManagedThreadId:获取当前托管线程的唯一标识符。 
Name:线程的名称。 
Priority:线程的调度优先级的值。通常情况下,系统可以自动调整线程的优先级。包含如下值:
    Highest:最高
    AboveNormal:高于Normal
    Normal:正常级别 
    BelowNormal:低于Normal
    Lowest:最低 
ThreadState:获取当前线程的状态。包含如下状态:
    Aborted:线程状态包括 AbortRequested 并且该线程现在已死,但其状态尚未更改为 Stopped。 
    AbortRequested:已对线程调用了 Thread.Abort 方法,但线程尚未收到试图终止它的挂起的 System.Threading.ThreadAbortException。 
    Background:线程正作为后台线程执行(相对于前台线程而言)。 此状态可以通过设置 Thread.IsBackground 属性来控制。 
    Running:线程已启动,它未被阻塞,并且没有挂起的 ThreadAbortException。 
    Stopped:线程已停止。 
    StopRequested:正在请求线程停止。 这仅用于内部。 
    Suspended:线程已挂起。 
    SuspendRequested:正在请求线程挂起。 
    Unstarted:尚未对线程调用 Thread.Start 方法。 
    WaitSleepJoin:线程已被阻止。 
 
Thread类常用方法:
Start:启动该线程,导致操作系统将当前实例的状态更改为 ThreadState.Running。 
Abort:在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。 调用此方法通常会终止线程,需要注意的是,Abort是在到达一个安全点后才被终止。
Join:阻止调用线程直到线程终止,可以理解为其余线程等待这个线程运行完。
Sleep:将当前线程挂起指定的毫秒数。 
 
通常情况下,使用多线程用以下方法
先是实例化一个Thread类对象
然后使用Start 方法启动线程
 
 
 
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
 
学习更多vb.net知识,请参看vb.net 教程 目录
 
 
————————————————
版权声明:本文为CSDN博主「VB.Net」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/UruseiBest/article/details/87891911

相关教程