免费织梦网站源码下载,网站的策划分析,wordpress 会员中心插件,能上网但是浏览器打不开网页一、多线程的用途 在介绍多线程的方法之前首先应当知道什么是多线程#xff0c; 在一个进程内部可以执行多个任务#xff0c;而这每一个任务我们就可以看成是一个线程。是程序使用CPU的基本单位。进程是拥有资源的基本单位#xff0c; 线程是CPU调度的基本单位。多线程的作用…一、多线程的用途 在介绍多线程的方法之前首先应当知道什么是多线程 在一个进程内部可以执行多个任务而这每一个任务我们就可以看成是一个线程。是程序使用CPU的基本单位。进程是拥有资源的基本单位 线程是CPU调度的基本单位。多线程的作用不是提高执行速度而是为了提高应用程序的使用率。我们程序在运行的使用,都是在抢CPU的时间片(执行权),如果是多线程的程序,那么在抢到 CPU的执行权的概率应该比较单线程程序抢到的概率要大.那么也就是说,CPU在多线程程序中执行的时间要比单线程多,所以就提高了程序的使用率.但是即使是多线程程序,那么他们中的哪个线程能抢占到CPU的资源呢,这个是不确定的,所以多线程具有随机。 多线程就好比在等待水开的同时看报纸而不是等水开了再开始看报纸。多线程是为了同步完成多项任务而是为了提高资源使用效率来提高系统的效率。(这个例子并不是很恰当可以简单理解为水开和看报纸交替执行交替的速度极快进而可以看作是两个任务同时执行的)。
二、常用多线程的方法
1、Thread类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace 线程test1005
{class Program{static void Main(string[] args){for (int i 0; i 300; i){Console.Write(1);}Thread t1 new Thread(() {for (int i 0; i 300; i){Console.Write(2);} });t1.Start();for (int i 0; i 300; i){Console.Write(3);}Console.Read();}}
} 运行结果
2、通过Task类最常用的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace 线程test1005
{class Program{static void Main(string[] args){for (int i 0; i 300; i){Console.Write(1);}Task t1 new Task(() {for (int i 0; i 300; i){Console.Write(2);} });t1.Start();for (int i 0; i 300; i){Console.Write(3);}Console.Read();}}
}
运行结果 在C#中多线程的方法主要就是Task方法效率高速度快。
提示本人准备建立一个技术交流群会将日常学习工作中遇到的问题和解决方案进行分享同时也会将代码和学习资料上传进去有什么不懂的问题可以咨询我vSJS66-12
生活所迫打个广告本人也代购莆田鞋不是中间商工厂直接取货价格优惠质量保证都是我自己前去挑选可以视频选购验货希望大家支持赚点生活费vSJS66-12 3、线程池ThreadPool类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace 线程test1005
{class Program{static void Main(string[] args){ThreadPool.QueueUserWorkItem(new WaitCallback(TestThreadPool), new string[] { test });for (int i 0; i 300; i){Console.Write(2);}Console.ReadKey();}public static void TestThreadPool(object state){string[] arry state as string[];//传过来的参数值int workerThreads 0;int CompletionPortThreads 0;for (int i 0; i 300; i){Console.Write(1);}ThreadPool.GetMaxThreads(out workerThreads, out CompletionPortThreads);Console.WriteLine(DateTime.Now.ToString() --- arry[0] --workerThreads workerThreads --CompletionPortThreads CompletionPortThreads);}}
}运行结果 4、通过begininvoke方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace 线程test1005
{class Program{static void Main(string[] args){Action a teat;a.BeginInvoke(null, null);for (int i 0; i 300; i){Console.Write(2);}Console.ReadKey();}static void teat(){for (int i 0; i 300; i){Console.Write(1);}}}
}运行结果 5、async和await方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace 线程test1005
{class Program{static void Main(string[] args){test();for (int i 0; i 300; i){Console.Write(3);}Console.Read();}public static async void test(){for (int i 0; i 300; i){Console.Write(1);}await Task.Run(() {for (int i 0; i 300; i){Console.Write(2);}});}}
}运行结果 本文介绍这几种C#中开启多线程的方法在后续学习中会对每一种线程方法进行更深一步的介绍希望大家多多关注。