时间:2021-05-20
什么是进程?
当一个程序被打开运行时,它就是一个进程。在进程中包括线程,进程可以由一个或多个线程组成。
什么是线程?
线程是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
什么是多线程?
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。
个人总结
在C#中我们开启一个应用程序就是打开了一个进程,这个进程中包括一个主线程。我们可以在此基础上在增加自己写的单个或多个线程,来执行我们想要完成的任务。
在Thread线程类中我们常用到的一样方法:
Start():启动线程;
Sleep(int):静态方法,暂停当前线程指定的毫秒数;
Abort():通常使用该方法来终止一个线程;
Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复;
Resume():恢复被Suspend()方法挂起的线程的执行。
在C#中开启一个线程,来执行我们所写的方法。主要是通过ThreadStart代理委托来实现。下面写一些简单代码示例。
代码示例
单线程:
复制代码 代码如下:
using System;
using System.Threading;
namespace StudyThread
{
class Program
{
static void Main(string[] args)
{
OneThread();
}
static void OneThread()
{
Thread threadA = new Thread(ThreadMethod);
threadA.IsBackground = true; //设置当前子线程为后台线程,为后台线程意味着,主线程关闭后,其他子线程都同时关闭
threadA.Start();
object ThreadParameter = "P";
Thread threadB = new Thread(new ParameterizedThreadStart(ThreadMethodParameter));
threadB.IsBackground = true;
threadB.Start(ThreadParameter);
Console.WriteLine("Main Write:M");
Console.ReadLine();
}
static void ThreadMethod()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("A");
}
}
/// <summary>
/// 带参数线程
/// </summary>
/// <param name="Parameter">只能定义一个object参数,因为委托ParameterizedThreadStart为单参数object类型</param>
static void ThreadMethodParameter(object Parameter)
{
for (int j = 0; j < 10; j++)
{
Console.WriteLine("B"+Parameter);
}
}
}
}
在代理里分别开启两个线程。
第一个线程ThreadA没带参数,线程运行时去执行ThreadMethod()方法.
第二个线程ThreadB带上一个Object参数,通过ParameterizedThreadStart委托去执行ThreadMethodParameter(object Parameter)方法.此线程在调用Start()时传入所需参数。
(写代码时我在想为什么带参数线程只能传一个object参数?看了代码才知道ParameterizedThreadStart只有一个参数没有重载)。
执行结果:
Main Write:M 为主线程打印。
A:为线程ThreadA打印。
BP:为带参数线程ThreadB打印。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
相信不少人对Javascript单线程表示怀疑:为何单线程可以实现异步操作呢?其实Javascript确实是单线程的(我们不妨把这个线程称作主线程),但它实现异
一、js--->单线程 严格意义上来说,javascript没有多线程的概念,所有的程序都是单线程依次执行的。 1、什么是单线程? 通俗点说,就是代码在执
本文实例讲述了Java使用Thread创建多线程并启动操作。分享给大家供大家参考,具体如下:按照教程实现了一个单线程的创建,但是单线程的创建于启动并不是很有实用
一、node单线程实现高并发原理众所周知nodejs是单线程且支持高并发的脚本语言。可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,下面我来
最近小编再给一些人安装电脑系统的时候,时不时聊到电脑下载问题,最容易谈到的就是关于单线程下载,可以有的小白直接来一句:单线程下载是什么,单线程下载是什么意思?当