unity基础学习十八,C# 多线程
这个文档详细介绍了多线程编程的基本概念和实现方法。以下是对文档内容的总结:
1. 线程基础
- 线程:一个线程是操作系统能够进行运算调度的最小单位。
- 多线程:多线程是指在一个进程中同时运行多个线程,每个线程执行不同的任务。
2. 线程状态
- 创建(New):线程对象被创建但尚未启动。
- 就绪(Runnable):线程对象已经准备好运行,等待CPU时间片。
- 运行(Running):线程正在执行。
- 阻塞(Blocked):线程因某种原因暂停执行,如等待I/O操作完成、获取锁等。
- 终止(Terminated):线程执行完毕或因异常而结束。
3. 线程管理
- Sleep():使当前线程暂停指定的时间。
- Join():等待另一个线程完成。
- Yield():建议调度器将当前线程的执行权让给其他线程。
4. 创建线程
创建线程的主要方法包括:
继承Thread类:
class MyThread : Thread { public override void Run() { Console.WriteLine("Running in a new thread."); } }实现Runnable接口:
class MyRunnable : IRunnable { public void Run() { Console.WriteLine("Running in a new thread."); } } Thread t = new Thread(new MyRunnable()); t.Start();
5. 管理线程
Sleep():在子线程中使用,使当前线程暂停。
public static void CallToChildThread() { Console.WriteLine("Child thread starts"); int sleepfor = 5000; Thread.Sleep(sleepfor); Console.WriteLine("Child thread resumes"); }Join():等待子线程完成。
public static void CallToChildThread() { Console.WriteLine("Child thread starts"); int sleepfor = 5000; Thread.Sleep(sleepfor); Console.WriteLine("Child thread resumes"); } static void Main(string[] args) { Thread childThread = new Thread(new ThreadStart(CallToChildThread)); childThread.Start(); childThread.Join(); // 等待子线程完成 }
6. 销毁线程
- Abort():中止线程,抛出
ThreadAbortException。public static void CallToChildThread() { try { Console.WriteLine("Child thread starts"); for (int counter = 0; counter <= 10; counter++) { Thread.Sleep(500); Console.WriteLine(counter); } Console.WriteLine("Child Thread Completed"); } catch (ThreadAbortException e) { Console.WriteLine("Thread Abort Exception"); } finally { Console.WriteLine("Couldn't catch the Thread Exception"); } } static void Main(string[] args) { Thread childThread = new Thread(new ThreadStart(CallToChildThread)); childThread.Start(); Thread.Sleep(2000); Console.WriteLine("In Main: Aborting the Child thread"); childThread.Abort(); }
引用
本文档主要参考了.NET Framework的多线程编程文档和示例代码。