C# 五十六、进程+线程+多线程+Thread类 (一)

进程

进程为应用程序的运行实例,是应用程序的一次动态执行。

当一个程序开始运行时,它就是一个进程。

线程

一个进程是由多个线程组成的,线程是程序执行的基本单位。

线程是程序中一个单一的顺序控制流程。

在单个程序中同时运行多个线程完成不同的工作,称为多线程。

Thread类

Thread类,用于对线程进行管理,如创建线程、暂停线程、终止线程、合并线程、设置其优先级并获取其状态。

方法名称

 

Thread

初始化Thread类的新实例

Abort

终止此线程的过程

Jion

阻调塞用线程,直到某个线程终止为止

ResetAbort

取消为当前线程请求的Abort

Sleep

将当前线程阻塞指定的毫秒数

Start

使线程执行

属性名称

说明

ISAlive

返回一个值,该值指示当前线程的执行状态

ISBackground

获取或设置一个值,该值指示某个线程是否为后台线程

Name

获取或设置线程的名称

Priority

数组类型不匹配

ThreadState

获取一个值,该值包含当前线程的状态

创建线程

线程生命周期开始于 System.Threading.Thread 类的对象被创建时,结束于线程被终止或完成执行时。

线程生命周期中状态

  • 未启动状态:当线程实例被创建但 Start 方法未被调用时的状况。
  • 就绪状态:当线程准备好运行并等待 CPU 周期时的状况。
  • 不可运行状态:下面的几种情况下线程是不可运行的:
    • 已经调用 Sleep 方法
    • 已经调用 Wait 方法
    • 通过 I/O 操作阻塞
  • 死亡状态:当线程已完成执行或已中止时的状况。

线程使用 

a、不带参数的    b、带参数的   

class Program
    {
        static void Main(string[] args)
        {
            //创建线程  参数是委托
            Thread thread = new Thread(Method);
            //开启线程
            thread.Start();
        }

        static void Method()
        {
            Console.WriteLine("创建线程啦");
        }
    }
class Program
    {
        static void Main(string[] args)
        {
            Thread thread = new Thread(Method);
            thread.Start("传参数啦");
        }
        //要求参数的类型必须是object 
        static void Method(object name)
        {
            Console.WriteLine(name);
        }
    }

结束线程 

a、Abort():调用此方法通常会终止线程。

b、Sleep():将当前线程阻塞指定的毫秒数

c、Suspend():该方法并不是终止未完成的线程,它仅仅挂起线程,以后还可恢复

d、Resume():恢复被Suspend()方法挂起的线程的执行

 应用

1、在两个线程调用一个方法

Thread thread = new Thread(print);
thread.Start();
thread.Priority = ThreadPriority.BelowNormal;//优先级

Thread thread1 = new Thread(print);
thread1.Start();
thread1.Priority = ThreadPriority.Highest;//优先级

2、如果是引用同一个对象的话,线程则共享这个数据

Class1 class1 = new Class1();
Thread t = new Thread(class1.TestMethod);
t.Start();

3、static静态共享数据

4、线程安全

5、线程池

  线程池:是可以用来在后台执行多个任务的线程集合,这使得主线程可以自由地异步执行其它任务

ThreadPool类提供了一个线程池。

Unity不支持多线程,必须要在主线程中操作它,但Unity可以同时创建很多脚本,并且可以分别绑定在不同的游戏对象身上,他们各自都在执行自己的生命周期,感觉像是多线程并行执行脚本。

猜你喜欢

转载自blog.csdn.net/NCZ9_/article/details/85050174