常常看到一些招聘上要求应聘者必须熟练掌握多线程,而对于我这个着实的菜鸟来讲多线程这个概念虽然常常听到,可是在实际操做中用的比较少,并且了解的也比较浅显,因此乘着这休息的几每天好好的学习学习,补上这方面的知识。多线程
PS:本文只是多线程这方面学习的记录,并非对多线程的深刻探讨,若是你和我同样对多线程不甚了解,能够和我一块儿共同窗习噢。也欢迎各位大神批评指正,小弟不胜感激!性能
对于概念这个东东,我从来都不喜欢记,也总是记不住,我更愿意结合概念和实际操做来让它给我留下印象。可是学习前咱们仍是来看看几个概念,让它首先在咱们脑海留下点影子再说。学习
进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。测试
线程:线程,有时被称为轻量级进程,是程序执行流的最小单元。spa
多线程:线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不一样的工做,称为多线程。操作系统
多线程是为了同步完成多项任务,不是为了提升运行效率,而是为了提升资源使用效率来提升系统的效率。线程是在同一时间须要完成多项任务的时候实现的。使用线程能够把耗时比较长的任务放到后台单独开一个线程,使程序运行得更快。同时使用多线程能够开发出更人性化的界面,例如当咱们提交某项数据的时候经过使用多线程显示处理进度等效果。线程
最简单的比喻多线程就像一个工厂的工人,而进程则是工厂的某个车间。工人离开车间就没法生产,同理车间也不可能只有一个员工。多线程的出现就是为了提升效率。code
更过的线程意味着更多的内存消耗;线程的退出可能会对程序带来麻烦;处理不当形成更多的死锁;过多的线程会影响性能(由于操做系统须要在各个线程间切换)blog
既然多线程有利又有弊,那么咱们就该扬长避短,发挥它的好处,避开它的不利,在之后的学习过程当中慢慢总结,定会弄清楚滴!进程
咱们写多线程的代码时必定要引入using System.Threading命名空间哦!
先来看个多线程的简单例子吧,看看是个啥回事儿,具体深刻的东东小弟在后面的博客再探讨
1 using System; 2 using System.Threading; 3 4 namespace ConsoleApplication14 5 { 6 class Program 7 { 8 [STAThread] 9 static void Main(string[] args) 10 { 11 Console.WriteLine("测试个人线程开始"); 12 Thread test = new Thread(new ThreadStart(myThread)); 13 test.Start(); 14 Thread.CurrentThread.Name = "断桥残雪"; 15 Console.WriteLine(Thread.CurrentThread.Name + Thread.CurrentThread.ManagedThreadId); 16 Console.WriteLine("测试个人线程结束"); 17 Console.ReadLine(); 18 } 19 20 public static void myThread() 21 { 22 for (int i = 0; i < 100; i++) 23 { 24 Console.WriteLine(i); 25 } 26 } 27 } 28 }
输出以下:
接下来在Console.WriteLine("测试个人线程结束");前加一行代码后:
1 Thread.Sleep(1); 2 Console.WriteLine("测试个人线程结束");
运行截图以下:
看了写的代码和运行结果是否是有点奇怪额,为啥我最后的一行代码Console.WriteLine("测试个人线程结束");提早执行了呢?说句实话哈我如今也不能解释得特别清楚,在后面的学习后我相信我能够回来解释的。<此处留下一个大问号?>还有在代码中使用了一个线程的属性ManagedThreadId,在后面的学习中我会介绍更多这些相关属性和方法,也但愿各位大神看到不对的尽管拍砖,奋斗的小菜鸟是打不倒滴、、、
接下来我会写一系列的关于多线程随笔,有兴趣的园友也能够和我一同窗习哈,欢迎欢迎!!!
立刻就要奔赴上海了,各类的不舍,各类的留恋。武汉别了,祝我爱个人和我爱的人每天开心,永远健康快乐。
------若是你以为此文对你有所帮助,别忘了点击下右下角的推荐咯,谢谢!------