1、单线程与多线程的区别,以及多线程的好处
单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的彩绘执行到。
多线程,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群发email的多线程软件,由于操作一次需要网络的返回信息 花的时间比较长,而对cpu来说却是空闲的,如果是一个一个顺序执行,那么搜索几千个IP就会花上好久好久。 而如果用多线程就可以在等待期间 加入其他的搜索,然后等待,这样可以提高效率。
2、下面通过举例来实现单线程与多线程之间的内容,大家可以给例子当中看出单线程与多线程之间的区别,这个也看各自的电脑的运行的速度,可能会因各自的电脑的运行的速度有关,因而大家可能会看到不同的线程运行结果
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//单线程的内容
/*Stopwatch stwatch = new Stopwatch();
stwatch.Start();
PrintNumb();
PrintStr();
stwatch.Stop();
Console.WriteLine(stwatch.Elapsed.TotalMilliseconds);
Console.ReadKey();*/
//Thread 这也许是最复杂的方法,但它提供了对线程的各种灵活控制。首先你必须使用它的构造函数创建一个线程实例,它的参数比较简单,只有一个ThreadStart 委托
//多线程的内容
ThreadStart printnumb = new ThreadStart(PrintNumb);
Thread readnum = new Thread(printnumb);
ThreadStart printstr = new ThreadStart(PrintStr);
Thread readstr = new Thread(printstr);
//接下来我们结合线程的ThreadState属性来了解线程的控制。ThreadState是一个枚举类型,它反映的是线程所处的状态。当一个Thread实例刚创建时,它的
//ThreadState是Unstarted;当此线程被调用Start()启动之后,它的ThreadState是 Running;
Stopwatch star = new Stopwatch();
star.Start();
readnum.Start();
readstr.Start();
while (true)
{
if (readstr.ThreadState == System.Threading.ThreadState.Stopped && readnum.ThreadState == System.Threading.ThreadState.Stopped)
{
star.Stop();
Console.WriteLine(star.Elapsed.TotalMilliseconds);
break;
}
}
Console.ReadKey();
}
public static void PrintNumb()
{
for (int i = 0; i < 1000; i++)
{
Console.WriteLine(i);
}
}
public static void PrintStr()
{
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("输出的是" + i.ToString());
}
}
}
}