转载自:http://www.cnblogs.com/ATually/archive/2010/10/21/1857261.html

线程这一概念,可以理解成进程中的一个小单元。这个单元是一个独立的执行单元,但是与进程中的其他线程共享进程中的内存单元。

由于Cpu资源是有限的,所以进程中的多个线程要抢占Cpu,这也导致进程中的多个线程交替执行。

Thread.Sleep() 本身的含义是当前线程挂起一定时间。

Thread.Sleep(0) MSDN上的解释是挂起此线程能使其他等待线程执行。这样的解释容易导致误解,我们可以这样理解,其实是让当前线程挂起,使得其他线程可以和当前线程再次的抢占Cpu资源。

代码示例:

 1 代码
 2
 3  static void Main(string[] args)
 4         {
 5             Console.WriteLine("Now main thread begin");
 6             Program p=new Program();
 7             Thread t = new Thread(new ThreadStart(p.ThreadProc));
 8             t.Start();
 9             for (int i = 0; i < 10; i++)
10             {
11                 Console.WriteLine("Main Thread:{0}",i);
12                 Thread.Sleep(0);//这个的意思只不过是让当前线程停顿一下,使得其他线程和他再次重新抢占资源
13             }
14             Console.Read();
15         }
16        void ThreadProc()
17         {
18             for (int i = 0; i < 10; i++)
19             {
20                 Console.WriteLine("ThreadProc:{0}",i);
21             }
22         }

执行结果:

可以看到 当主线程执行了一次循环时,Sleep(0)了一下,使得资源重新在两个线程中分配了一下。另一个线程抢占到资源并执行。

再执行一下,看下结果:

可以看到 这次重新分配资源时,先是主线程抢到了资源执行一段时间,之后是另一个线程执行。

从执行结果可以看出,Thread.Sleep(0) 的真正作用,同时也可以看出多线程之间是交替执行的。

转载于:https://www.cnblogs.com/qidaiymm/p/4956814.html

Thread系列——Thread.Sleep(0)相关推荐

  1. Thread系列之Thread.Join()

    Thread.Join()方法,顾名思义,在一个线程中加入一些东西. MSDN上解释其作用为:阻塞 "调用线程" 直到某个线程结束. 这个翻译过来的解释有点晦涩.举个例子如下: s ...

  2. java thread start0_Java: Thread类中start()和run()的区别

    版本:JDK1.8 thread的两种使用方式: //继承Thread类 NewThread thread = newNewThread();//调用默认的构造方法,父类也会调用默认的 thread. ...

  3. Unable to find libthread_db matching inferior‘s thread library, thread debugging will not be availab

    开启gdb调试出现以下问题 1.Unable to find libthread_db matching inferior's thread library, thread debugging wil ...

  4. 线程的创建与启动——Thread 类有两个常用的构造方法:Thread()与 Thread(Runnable)||多线程运行结果是随机的

    线程的创建与启动 在 Java 中,创建一个线程就是创建一个 Thread 类(子类)的对象(实例). Thread 类有两个常用的构造方法:Thread()与 Thread(Runnable).对应 ...

  5. Hadoop 生态系列之 1.0 和 2.0 架构

    自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢.趁着还没有入职,给大家争取先把 Hadoop 系列的文章总结完毕,可以当做科普文,也可以当做 ...

  6. Hadoop 系列之 1.0 和2.0 架构

    Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢.趁着还没有入职,给大家争取先把 Hadoop ...

  7. Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构

    精选30+云产品,助力企业轻松上云!>>> Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背 ...

  8. 【CNMP系列】CentOS7.0下安装Nginx服务

    [CNMP系列]CentOS7.0下安装Nginx服务 话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下 ...

  9. 三星android pie,三星Galaxy系列Android 9.0 Pie

    原标题:三星Galaxy系列Android 9.0 Pie IT之家10月8日消息 安卓9.0 Pie发布也有一段时间了,除了谷歌自家的Pixel系列之外,华为.小米.一加.诺基亚等都已经适配了对应的 ...

最新文章

  1. HDU 1285--确定比赛名次【拓扑排序 amp;amp; 邻接表实现】
  2. php收集radio表单,jQuery对于单选表单(radio)以及其它表单取值
  3. cocoa mysql_基本MySQL查询
  4. spring-Bean依赖注入-》普通数据类型
  5. dedecms 制作模板中使用的全局标记介绍
  6. 抓取html中用到的css_如何使用HTML和CSS制作像《星球大战》一样的抓取文字
  7. java相关技术简介_java技术简介?
  8. Pytorch中GPU使用
  9. Linux内核TCP/IP协议栈运行时序 | 配图
  10. Halcon阈值分割
  11. Redis 6.0 源码阅读笔记(13 ) -- Redis 集群节点选举流程
  12. 4. 卷2(进程间通信)---管道和FIFO
  13. python模型参数估计_python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误...
  14. windows上vscode 安装Fortran-language-server
  15. 关于VS2005与Vs2008的比较
  16. 机器学习十大算法实现python代码汇总
  17. 0基础尝试实现UnityURP渲染管线的AdditionalLit(点光源,聚光灯)非平行光的光照模型代码
  18. 安装office 错误代码:30068-39
  19. 为什么说衰老先从血管开始?
  20. RTL8192EU调试信息

热门文章

  1. ca 服务器的搭建 和证书的申请与颁发
  2. 无法删除文件,文件或目录损坏且无法读取的解决
  3. linux perl telnet安装,linux @ Net :: Telnet和vt-100终端的Perl问题
  4. html5 strongeaseinout,Canvas開發庫封裝
  5. ucint核心边缘分析_5G、云计算、物联网与边缘计算的相辅相承
  6. python多进程_python多进程
  7. 机械转嵌入式还是it?学嵌入式好还是java好?
  8. gis中的擦除_GIS案例分析 | 公园建设选址
  9. java common.lang_Java 开源工具 Apache Common Lang
  10. mqtt 传文件断开连接的原因_mqtt 发送消息断开链接