博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于多线程生命周期原理
阅读量:6689 次
发布时间:2019-06-25

本文共 1340 字,大约阅读时间需要 4 分钟。

平时我们经常听说asp.net页面生命周期,大致是 创建页面类,打造页面控件树,渲染响应输出页面(当然里面还有很多管道执行处理事件)最后呈现在我们面前就是一个网页(也就我们通常说的页面生命周期!)

今天本人谈谈多线程的生命周期,如有不对还望包涵,多多指教!

首先上上图:

class Program    {                static void Main(string[] args)        {            //创建线程            Thread thread = new Thread(run);             thread.Start();            //主线程代码            for (int i = 0; i < 100; i++)            {                Console.WriteLine("main--->"+i);            }                   }        static void run()        {            for (int i = 0; i < 100; i++)            {                Console.WriteLine("run"+i);            }        }           }

  

为什么会出现这种输出情况呢?当然你们会想到不是多线程嘛,当然是可以切换的(不错一下,这里也就所谓的异步线程,要是同步线程必须等待另外一个线程结束才行,因为生活有的东西也必须用到同步,取钱就类似),没错这是线程产生的效果,这时候可能你会问,它们为什么输出结果有长有段呢?

下面给出一个图来说说明它们为什么产生这种效果:

新建状态:我们运行Main方法(也就是创建线程,他是一个主线)默认调statrt--->就绪状态

就绪状态:表示有权限获取cpu的时间片,就是获取cpu分配执行这个线程的时间(说到这里你可能会明白一些东西,为什么相互切,为输它输出多一点,它要输出少一点!当然是分配的时间长短不一样!)----->运行状态

运行状:也就是就绪状态拿到cpu分配的时间片之后就进入运行状态

如输出:  main--->0 1  2 3  4 在输入run 0 1 2 3  因为main线程分配的cpu时间片只有那么一点时间如0.001s 运行状态方法没有执行完它的时间就用完了,从而进入

阻塞状态,在去请求cpu分配执行时间片,当main时间片执行完了之后,thread线程它在创建的时候当然也分配时间。哥们你搞完了(搞完的是刚才的时间片哦),该我了!!!!

所以就一直这样搞下去(当然接着上一次执行哦!),到线程销亡(所以就出现我们看到的效果!)。

不从:上面输出有长有短,就是获取的cpu时间片长短不一样!主线程的执行for 时候,执行到输出 main 4 时间片就用完..同理run方也是一样的!

下面上图看程序输出的不同结果!(看到效果再去看上面那个线程生命周期图)

好了,就说到这里,如有说的不对的地方,欢迎指出就好,方不要丢砖哦!

转载地址:http://shzoo.baihongyu.com/

你可能感兴趣的文章
jQuery选择器总结
查看>>
无法加载协定为“WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置...
查看>>
活动目录基础
查看>>
IOS --React Native
查看>>
Linux CPU
查看>>
用模板实现顺序表与单链表
查看>>
c++中重载,重写,重定义的区别
查看>>
nagios监控
查看>>
Linux/Centos ntp时间同步,联网情况和无网情况配置
查看>>
初级网络运维工程师比赛题目
查看>>
跨交换机实现vlan实验报告
查看>>
如何在Rancher Catalog中使用VMware Harbor
查看>>
13.C#--求1-100之间所有整数的和
查看>>
40.C#--面对对象,类的继承和构造函数继承的使用
查看>>
列表,元组,集合
查看>>
jquery easyui滚动条部分设置介绍
查看>>
cannot find -lxxx问题
查看>>
预防云端开源项目打包 Redis Labs再更改模块
查看>>
超惊人!去年发生的身分外泄安全事件是2017的4倍
查看>>
oracle sqlplus免安装的配置instantclient-basiclite
查看>>