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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Thread2

發布時間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Thread2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

五 判斷多個線程是否都結束的兩種方法

確定所有線程是否都完成了工作的方法有很多,如可以采用類似于對象計數器的方法,所謂對象計數器,就是一個對象被引用一次,這個計數器就加1,銷毀引用就減1,如果引用數為0,則垃圾搜集器就會對這些引用數為0的對象進行回收。

方法一

? ??線程也可以采用計數器的方法,即為所有需要監視的線程設一個線程計數器每開始一個線程,在線程執行方法中為這個計數器加1,如果某個線程結束(在線程執行的方法最后為這個計數器減1),為這個計數器減1,然后在開始一個線程,按著一定的時間間隔來監視這個計數器,如是總的計數器為0,說明所有的線程都結束了。當然,也可以不用這個監視線程,而在每一個工作線程的最后(在為計數器減1的代碼的后面)來監視這個計數器,也就是說,每一個工作線程在退出之前,還要負責檢測這個計數器。使用這種方法不要忘了同步這個計數器變量啊,否則會產生意想不到的后果。

方法二:使用Thread.join方法

join方法只有在線程結束時才繼續執行下面的語句。可以對每一個線程調用它的join方法,但要注意,這個調用要在另一個線程里,而不要在主線程,否則程序會被阻塞的。

個人感覺這種方法比較好。

線程計數器方法演示:

class ThreadCounter : MyThread{private static int count = 0;private int ms;private static void increment(){lock (typeof(ThreadCounter)) // 必須同步計數器 {count++;}}private static void decrease(){lock (typeof(ThreadCounter)){count--;}}private static int getCount(){lock (typeof(ThreadCounter)){return count;}}public ThreadCounter(int ms){this.ms = ms;}override public void run(){increment();Thread.Sleep(ms);Console.WriteLine(ms.ToString()+"毫秒任務結束");decrease();if (getCount() == 0)Console.WriteLine("所有任務結束");}}ThreadCounter counter1 = new ThreadCounter(3000); ThreadCounter counter2 = new ThreadCounter(5000); ThreadCounter counter3 = new ThreadCounter(7000);counter1.start(); counter2.start(); counter3.start();

? ?上面的代碼雖然在大多數的時候可以正常工作,但卻存在一個隱患,就是如果某個線程,假設是counter1,在運行后,由于某些原因,其他的線程并未運行,在這種情況下,在counter1運行完后,仍然可以顯示出“所有任務結束”的提示信息,但是counter2和counter3還并未運行。為了消除這個隱患,可以將increment方法從run中移除,將其放到ThreadCounter的構造方法中,在這時,increment方法中的lock也可以去掉了。代碼如:

public ThreadCounter(int ms){this.ms = ms;increment();}

運行上面的程序后,將顯示如圖2的結果。

?

?

使用Thread.join方法演示

private static void threadMethod(Object obj) {Thread.Sleep(Int32.Parse(obj.ToString()));Console.WriteLine(obj + "毫秒任務結束"); } private static void joinAllThread(object obj) {Thread[] threads = obj as Thread[];foreach (Thread t in threads)t.Join();Console.WriteLine("所有的線程結束"); }static void Main(string[] args) {Thread thread1 = new Thread(threadMethod);Thread thread2 = new Thread(threadMethod);Thread thread3 = new Thread(threadMethod);thread1.Start(3000);thread2.Start(5000);thread3.Start(7000);Thread joinThread = new Thread(joinAllThread);joinThread.Start(new Thread[] { thread1, thread2, thread3 });}

??在運行上面的代碼后,將會得到和圖2同樣的運行結果。上述兩種方法都沒有線程數的限制,當然,仍然會受到操作系統和硬件資源的限制。

轉載于:https://www.cnblogs.com/blosaa/archive/2013/06/04/3116382.html

總結

以上是生活随笔為你收集整理的Thread2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无遮挡裸光屁屁打屁股男男 | 欧美激情一区二区在线 | 91.久久| 黑人玩弄人妻一区二区三区影院 | 日韩欧美中文字幕在线观看 | 欧美大胆视频 | 无码任你躁久久久久久久 | 五月天中文字幕av | 你懂的国产在线 | 美女扒开腿让人桶爽原神 | 中文字幕在线视频免费播放 | 国产123区在线观看 91国产一区二区 | aa视频网站 | 亚洲小说春色综合另类 | 国产精品xxxxx | 欧美精品一二三四区 | 无码aⅴ精品一区二区三区浪潮 | 欧美激情一区二区三区四区 | 国产91绿帽单男绿奴 | 香蕉在线视频观看 | 91最新视频| 午夜在线免费观看视频 | 视频黄页在线观看 | 午夜视频福利在线 | jizjiz中国少妇高潮水多 | 亚洲人午夜精品 | 久久久久久久久久久久Av | 欧美一区二区日韩 | 欧美性大战久久久久久久蜜桃 | 涩涩视频免费在线观看 | 欧美激情喷水 | 国产精品久久久久久久久久小说 | 性渴老太作爱 | 亚洲综合免费观看高清完整版在线 | 欧美成人激情视频 | 久久人人爽人人爽人人av | 日韩日韩日韩日韩日韩 | 欧美性猛交ⅹxx | 韩国三级hd中文字幕 | 永久免费在线观看视频 | 久久久线视频 10 | 99久久久国产 | 国产精品性爱在线 | 精品免费在线观看 | 久久国产精品免费视频 | 91视频看看 | 国产aaa毛片 | 日韩视频免费观看高清完整版在线观看 | 婷婷综合久久 | 黑人操中国女人视频 | 女性向片在线观看 | 黄色免费成人 | 亚洲免费三级 | 九色蝌蚪porny| 成人免费观看cn | 啪啪网站大全 | av手机免费在线观看 | 香蕉视频成人在线 | 亚洲色图27p| 18成人在线 | 人人人人干 | 福利资源在线 | 99精品视频99 | www.亚洲免费 | 成人在线观看小视频 | 欧美午夜精品一区二区三区 | 97人人模人人爽人人少妇 | 农村末发育av片一区二区 | 久久日韩 | 国产精品对白刺激久久久 | 精品人妻伦一二三区久久 | 性生生活大片又黄又 | 国产一级特黄aaa大片 | 欧美你懂得 | av瑟瑟 | 免费看一级黄色大全 | 久久精品视频8 | 999热精品视频 | 日本一区二区三区视频在线播放 | 久久久噜噜噜久久 | 天天影视插插插 | 一级特黄aa大片 | 欧洲中文字幕日韩精品成人 | 综合久久久 | 久久精品视频9 | 国产精品97 | 丁香花电影免费播放在线观看 | 动漫涩涩免费网站在线看 | 美女免费毛片 | 国产区精品在线观看 | 黄a在线观看 | 精品国产一二三区 | 精品久久精品 | 欧洲精品码一区二区三区免费看 | 欧美精品1区2区 | 天天干妹子 | 久久66热这里只有精品 | 日本一区不卡在线观看 | 韩日av|