一 前言編程
1.爲何網絡編程要用到多線程?網絡
在網絡編程中常常會遇到網絡阻塞或者網絡等待等狀況,處理這些狀況就會等待很長時間,如可不加多線程處理就會出現執行時間過長,容易出現錯誤,反應遲鈍等等情況,使用多線程後就會大大提升程序的健壯性和伸縮新性能。多線程
2.進程和線程的區別性能
一個程序至少有一個進程,形象點說,你開QQ就是打開了一個進程,可是你還要同時和到幾我的聊天,打開好幾個聊天窗口,每一個聊天窗口就是一個線程,(因此同一進程能夠劃分爲若干個線程,每一個線程都有本身的寄存器等等,可是代碼區是共享的)學習
二 多線程基礎spa
在學習多線程寄基礎前,先給你們一個基礎的宏觀的概念,在這部分分爲8個部分:線程
1.啓動線程 2.終止線程 3.合併線程 4.線程休眠 5.線程優先級 6.同步 7.線程池應用對象
線程的應用用到了Thread類 他的主要方法有:blog
1.Abort 終止線程進程
2.Interrupt 中斷線程
3.join 阻塞調用線程,直到某個線程終止時爲止
4.Sleep 睡眠
先來上的簡單的例子:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { Thread thread = new Thread(new ThreadStart(() => { while (true) { Thread.Sleep(100); Console.WriteLine("111"); } })); thread.Start(); //啓動線程 //thread.Interrupt(); //中斷線程 會拋出異常 //thread.Abort(); //終止線程 Thread.Sleep(2000); //主線阻塞2s thread.Suspend(); //線程掛起 Thread thread2 = new Thread(new ThreadStart(() => { //thread.Start(); //這裏有異常 [線程正在運行或被終止;它沒法從新啓動。] //爲何這裏會報錯呢? 若是想開始從新啓動一個現有的進程 只能將以前的掛起 而後繼續執行 //或者從新New一個thread對象 thread.Resume(); //喚醒掛起的線程 while (true) { Thread.Sleep(100); Console.WriteLine("222"); } })); thread2.Start(); //啓動線程2 Console.ReadLine(); } } }