本文转载自微信公众号「UP技术控」,作者conan5566。转载本文请联系UP技术控公众号。
创建线程
线程是通过扩展 Thread 类创建的。扩展的 Thread 类调用 Start() 方法来开始子线程的执行。
下面的程序演示了这个概念:
- class ThreadCreationProgram
- {
- public static void CallToChildThread()
- {
- Console.WriteLine("Child thread starts");
- }
- static void Main(string[] args)
- {
- ThreadStart childref = new ThreadStart(CallToChildThread);
- Console.WriteLine("In Main: Creating the Child thread");
- Thread childThread = new Thread(childref);
- childThread.Start();
- Console.ReadKey();
- }
- }
当上面的代码被编译和执行时,它会产生下列结果:
- In Main: Creating the Child thread
- Child thread starts
管理线程
Thread 类提供了各种管理线程的方法。
下面的实例演示了 sleep() 方法的使用,用于在一个特定的时间暂停线程。
- class ThreadCreationProgram
- {
- public static void CallToChildThread()
- {
- Console.WriteLine("Child thread starts");
- // 线程暂停 5000 毫秒
- int sleepfor = 5000;
- Console.WriteLine("Child Thread Paused for {0} seconds",
- sleepfor / 1000);
- Thread.Sleep(sleepfor);
- Console.WriteLine("Child thread resumes");
- }
- static void Main(string[] args)
- {
- ThreadStart childref = new ThreadStart(CallToChildThread);
- Console.WriteLine("In Main: Creating the Child thread");
- Thread childThread = new Thread(childref);
- childThread.Start();
- Console.ReadKey();
- }
- }
当上面的代码被编译和执行时,它会产生下列结果:
- In Main: Creating the Child thread
- Child thread starts
- Child Thread Paused for 5 seconds
- Child thread resumes
销毁线程
Abort() 方法用于销毁线程。
通过抛出 threadabortexception 在运行时中止线程。这个异常不能被捕获,如果有 finally 块,控制会被送至 finally 块。
下面的程序说明了这点:
- class ThreadCreationProgram
- {
- public static void CallToChildThread()
- {
- try
- {
- Console.WriteLine("Child thread starts");
- // 计数到 10
- 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)
- {
- ThreadStart childref = new ThreadStart(CallToChildThread);
- Console.WriteLine("In Main: Creating the Child thread");
- Thread childThread = new Thread(childref);
- childThread.Start();
- // 停止主线程一段时间
- Thread.Sleep(2000);
- // 现在中止子线程
- Console.WriteLine("In Main: Aborting the Child thread");
- childThread.Abort();
- Console.ReadKey();
- }
- }
当上面的代码被编译和执行时,它会产生下列结果:
- In Main: Creating the Child thread
- Child thread starts
- 0
- 1
- 2
- In Main: Aborting the Child thread
- Thread Abort Exception
- Couldn't catch the Thread Exception
2020年是充满动荡的一年,组织面临着众多挑战。进入2021年,大数据行业将会更加...
操作场景 当您的裸金属服务器需要跨POD通信时,可以为裸金属服务器添加一块增强...
本文转载自网络,原文链接:https://mp.weixin.qq.com/s/vqRfJtXcXg6fS_aeX0x8jQ...
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...
本文转载自微信公众号「程序员内点事」,作者程序员内点事。转载本文请联系程序...
很多企业普遍认为,迁移到云端会扩大攻击面,因此,在云端存储数据不如在本地存...
本月DataWorks产品月刊为您带来 产品活动 1.参与阿里云DataWorks问卷调研 (Aliyu...
一、定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名、括号、...
作者 | 刘晓敏 来源 | 阿里巴巴云原生公众号 Seata 是一款简单易用,高性能、开...
目前 云服务器 有哪些?随着 云计算 的发展, 云服务器 市场上提供 云服务器 的...