日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多线程编程(1)

發(fā)布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程编程(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為了以后忘記以后可以再看,所以記錄下.

主線程

程序開始后將有一個主線程,即

Thread.CurrentThread

一個簡單的示例,阻塞當(dāng)前線程

class Program {static void Main(string[] args){Console.WriteLine(DateTime.Now);Thread.Sleep(5000);Console.WriteLine(DateTime.Now);} }

創(chuàng)建一個線程

public class Demo1 {private Thread thread1;private Thread thread2;public Demo1(){thread1 = new Thread(new ThreadStart(Task1));thread2 = new Thread(new ThreadStart(Task2));thread1.Start();thread2.Start();}public void Task1(){Console.WriteLine("Code By Developer");}public void Task2(){Console.WriteLine("Test By Tester");} }

這里創(chuàng)建了2個線程,然后調(diào)用Start方法啟動線程.

阻塞內(nèi)部線程(非主線程)

修改上面程序,阻塞第1個線程

public void Task1() {Console.WriteLine(DateTime.Now);Thread.Sleep(5000);Console.WriteLine(DateTime.Now);Console.WriteLine("Code By Developer"); }public void Task2() {Console.WriteLine("Test By Tester"); }

可以看到兩個線程互不影響

為什么要使用線程

我想能不用線程就不要用,因為線程很復(fù)雜.凡事復(fù)雜的東西均隱藏在背后,一切都是為了讓客戶感受到更加簡單。

Windows操作系統(tǒng)是多進(jìn)程了,為什么要多進(jìn)程?那么你可以一邊上網(wǎng),一邊聽歌,一邊聊天。否則這3件事情你只能選擇1個。你愿意怎么樣的方式?

多線程也是一樣,想象一下,很少人看到公司老板在寫程序吧?

老板猶如公司的主程序一般,他忙不過來,必須把任務(wù)分擔(dān)出去,讓某某人編碼,讓某某人搞測試,一個公司的運(yùn)作就猶如一個程序。

人是怎么做事的

若有3件事1個人的話,只能一件一件事做,無法分身。

若有3件事3個人的話,那么可以1個人做1件事。人多好辦事。

OK,先不要想的太復(fù)雜,都是可以以現(xiàn)實生活來表達(dá)呢。拋棄難懂的理論。

線程優(yōu)先級

假設(shè)你到一家餐館,廚師負(fù)責(zé)燒菜,營業(yè)員負(fù)責(zé)端菜。營業(yè)員就端不了菜。那么廚師燒菜的優(yōu)先級就要比較高.

其實比較常見的就是我們下載電影時,你肯定會挑你喜歡的看優(yōu)先下載的,同時也會開著其他下載

示例代碼如下

?

public class Demo1 {private Thread thread1;private Thread thread2;public Demo1(){thread1 = new Thread(new ThreadStart(Task1));thread2 = new Thread(new ThreadStart(Task2));thread1.Priority = ThreadPriority.Highest;thread2.Start();thread1.Start();}public void Task1(){for (int i = 0; i < 10; i++){Console.WriteLine("Download Moive");}}public void Task2(){for (int i = 0; i < 10; i++){Console.WriteLine("Download Book");}} }

結(jié)果,雖然第2個線程先開始啟動,但還是第1個線程的任務(wù)先完成,當(dāng)然設(shè)置不同線程的優(yōu)先級效果會不同

掛起(Suspend)和恢復(fù)(Resume)線程

  • 你在工作的時候,在以下情況下會停下手頭的工作,比如中午吃飯,上廁所.完事以后則以后回來工作.
  • 老板有其他工作給你做,你必須把手頭工作停下,完成后繼續(xù)做原先的事
  • 總而言之需要停下當(dāng)前工作,之后恢復(fù),示例如下

    private Thread thread1; public Demo1() {thread1 = new Thread(new ThreadStart(Task1));thread1.Start();thread1.Suspend();Console.WriteLine("Stop");Thread.Sleep(1000);Console.WriteLine("Begin");thread1.Resume(); }public void Task1() {Console.WriteLine("Working"); }

    結(jié)果

    轉(zhuǎn)載于:https://www.cnblogs.com/Clingingboy/archive/2010/11/15/1877870.html

    總結(jié)

    以上是生活随笔為你收集整理的多线程编程(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。