线程Thread有什么用?感觉就是用了一计时器来回调动,顺序执行程序,没有并行同时运行代码?
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;
namespace 线程测试{ class MyInterrupt { public static Thread sleeper; public static Thread awaker; public void SleepThread() { for (int i = 1; i < 10; i++) { Console.Write(i + ","); if (i == 4 || i == 8) { Console.WriteLine("Thread is sleep at" + i); try { Thread.Sleep(20);//有点像Timer控件,掐时间跑程序而已,哪里体现两个线程的优点? } catch (ThreadInterruptedException e) { Console.WriteLine("Thread is interrupted"+"异常了!"+e.Message); }
} } } public void AwakeThread() { for(int i=10;i<20;i++) { Console.Write(i+","); if(sleeper.ThreadState==System.Threading.ThreadState.WaitSleepJoin) { Console.WriteLine("Thread is awake at滚犊子"+i); sleeper.Interrupt(); } } } static void Main(string[] args) { MyInterrupt mi = new MyInterrupt(); sleeper = new Thread(new ThreadStart(mi.SleepThread)); awaker = new Thread(new ThreadStart(mi.AwakeThread)); sleeper.Start();//首先运行sleeper线程 awaker.Start();//第二个运行的awaker线程 Console.Read(); }
}}
运行程序结果截图:
问题:
1,运行的结果,有时候不一样,是不是就是代码并行运行的结果,导致输出的结果可控性差?
2线程究竟是什么,感觉就是个函数而已,没什么特别,没有用,就像windowform窗体,没有关闭窗体而已?其实具体线程是什么,有什么用处?线程出现的历史原因?其实不用线程,用函数函数代替就行,还弄个线程干什么?
5回答
-
牛魔王的故事
对于单核来说,同一时刻,肯定是只能执行一段代码的。
多线程的作用在于让多段代码随机执行,就不用等待耗时长的代码执行完毕。可以优先执行后面的过程。
-
泛舟湖上清波郎朗
你看的这是别人的DEMO,就是在那儿演示怎么写Thread的代码。当然你不明白为什么要有线程了。
这么说吧,不用线程的话,你的UI就会卡死。比如你点下一个按钮,假设要做30分钟,不用线程的话,你那个软件就直接废了,
谁点都不响应。
-
BIG阳
如果是winform的话,也没有多线程?其实一个线程好比是一个winform窗体而已,可在winform窗体根本没有使用线程;照你的例子,假设做UI的话,我用一个窗体做UI,其实要处理的是用另外一个窗体即刻,不用线程技术?请老师,指点
-
慕无忌1623718
连青人``多县城的重点在于异步。你先弄明白什么是异步再说吧
-
眼眸繁星
异步,同步的反义词