前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VB.NET中,多线程的学习笔记(一)

VB.NET中,多线程的学习笔记(一)

作者头像
哆哆Excel
发布2024-02-26 09:48:12
1760
发布2024-02-26 09:48:12
举报
文章被收录于专栏:哆哆Excel哆哆Excel
一、多线程有什么优点

1.提高响应性:在单个进程中创建多个线程可以使得应用程序在执行耗时任务(如网络通信、文件I/O或大量计算)的同时保持用户界面的响应,从而改善用户体验。

2.资源利用率:现代计算机通常拥有多个处理器核心。通过多线程,应用程序可以利用这些硬件资源并行处理任务,提高了整体性能和CPU使用率。

3.并发执行:多线程允许程序同时执行多个操作,特别是在涉及多个独立任务或可以分解为并行工作的场景中,能够显著缩短总体执行时间。

4.简化复杂逻辑:对于复杂的系统或大型数据处理任务,将工作分解到多个线程可以使代码结构更清晰,并且更容易管理和维护。

5.异步编程模型:.NET框架提供了诸如BackgroundWorker类、Task类和TPL(任务并行库)等工具,它们简化了多线程编程,并支持事件驱动的异步编程模型,使开发者可以更容易地实现非阻塞UI和异步任务的执行与监控。

6.更好的可扩展性和伸缩性:使用多线程技术编写的应用程序,在面对增加的工作负载时,可以更加容易地分配任务给更多的线程或者处理器,从而实现更好的可扩展性和系统伸缩性。

二、多线程方式之System.Threading

(一)System.Threading

在VB.NET中,System.Threading 命名空间提供了多种与线程相关的类和接口。其中 Thread 类是用于创建和管理线程的主要类,以下是一些主要的属性和方法:

(二)Thread 类的部分属性:

属性

说明

ManagedThreadId

获取当前托管线程的唯一标识符。

Name

设置或获取线程的名称,方便调试时识别。

IsBackground

确定线程是否为后台线程(守护线程)。

Priority

获取或设置线程的优先级。

(三)Thread 类的部分方法:

方法

说明

Start()

启动一个新线程并执行指定的委托(通过构造函数传递给 ThreadStart 或 ParameterizedThreadStart)

Abort()

中断线程的执行(不推荐使用,应尽量避免直接中止线程)

Join()

阻止调用线程直到指定的线程终止

Sleep()

使当前线程暂停执行指定的时间量

实例:

代码语言:javascript
复制
Imports System.Threading  
Module Module1  
  Sub Main()  
        ' 创建一个新线程  
       Dim workerThread As New Thread(New ThreadStart(AddressOf DoWork))  
        ' 开始执行线程  
       workerThread.Start()  
        ' 主线程继续执行其他任务  
       Console.WriteLine("主线程正在执行其他任务...")  
        ' 等待工作线程完成  
       workerThread.Join()  
       Console.WriteLine("所有任务完成。")  
       Console.ReadLine()  
End Sub  
    ' 线程要执行的方法  
 Sub DoWork()  
   For i As Integer = 1 To 5  
       Thread.Sleep(500) ' 模拟耗时任务  
      Console.WriteLine("工作线程执行任务: " & i.ToString())  
   Next  
 End Sub  
 End Module

此外,System.Threading 命名空间还包含其他用于处理线程同步、异步编程以及定时任务的类,

例如:

Mutex, Semaphore, Monitor 等用于同步多线程访问共享资源。

AutoResetEvent, ManualResetEvent, EventWaitHandle 作为线程间的信号同步机制。

Interlocked 类提供原子操作,如自增、交换等,确保在多线程环境下的数据一致性。

ThreadPool 类可用于管理和复用线程池中的线程。

Timer 类(如 System.Threading.Timer),用于调度定期或单次回调事件。

请注意,现代.NET框架更倾向于使用 Task 和 Task.Parallel 类(来自 System.Threading.Tasks 命名空间)来进行异步编程和多线程操作,因为它们提供了更高级别的抽象和更好的性能管理功能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档