C#中控制線程池的執行順序

在使用線程池時,當用線程池執行多個任務時,由于執行的任務時間過長,會導制兩個任務互相執行,如果兩個任務具有一定的操作順序,可能會導制不同的操作結果,這時,就要將線程池按順序操作。下面先給一段代碼,該代碼是不按順序對線程池進行操作的,代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ConsoleApplication1{class Program{static void Main(string[] args){AutoResetEvent autoEvent = new AutoResetEvent(false);ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod), autoEvent);ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod), autoEvent);Console.ReadLine();}static void ThreadMethod(object stateInfo){for (int i = 0; i < 100;i++ )Console.WriteLine("ThreadOne, executing ThreadMethod, " + "is {0}from the thread pool.", Thread.CurrentThread.IsThreadPoolThread ? "" : "not ");}static void WorkMethod(object stateInfo){for (int i = 0; i < 100; i++)Console.WriteLine("ThreadTwo, executing WorkMethod");}}}

運行結果如圖1、圖2所示。

?

圖1? 運行結果的上半部

?

圖2? 運行結果的下半部

從圖1、圖2可以看出,在使用線程池對線程進行操作時,由于各任務的時間過長,多個任務的線程可能會交互操作,那么,如何才能將線程池按指定的順序進行操作呢?主要是用AutoResetEvent類來實現的。

可以用AutoResetEvent類的WaitOne方法阻止線程,然后只執行當前操作的線程池,當遇到AutoResetEvent類的Set方法后,將當前線程設置為終止狀態,執行其他等待的線程。修改后的代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ConsoleApplication1{class Program{static void Main(string[] args){AutoResetEvent autoEvent = new AutoResetEvent(false);ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod), autoEvent);autoEvent.WaitOne();ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod), autoEvent);autoEvent.WaitOne();Console.ReadLine();} static void ThreadMethod(object stateInfo){for (int i = 0; i < 100;i++ )Console.WriteLine("ThreadOne, executing ThreadMethod, " + "is {0}from the thread pool.", Thread.CurrentThread.IsThreadPoolThread ? "" : "not ");((AutoResetEvent)stateInfo).Set();}static void WorkMethod(object stateInfo){for (int i = 0; i < 100; i++)Console.WriteLine("ThreadTwo, executing WorkMethod");((AutoResetEvent)stateInfo).Set();}}}

運行結果如下:

?

轉載于:https://www.cnblogs.com/DonetRen/p/10177339.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252729.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252729.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252729.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL觸發器 trigger學習

觸發器&#xff1a;一類特殊的事物。可監視某種數據操作&#xff0c;并觸發相關操作&#xff08;insert/update/delete&#xff09;。表中的某些數據改變&#xff0c;希望同一時候能夠引起其他相關數據改變的需求。 作用&#xff1a;變化自己主動完畢某些語句查詢&#xff0c;加…

如何分析企業未來發展趨勢——以海康威視為例

財務分析主要基于歷史數據&#xff0c;但投資還需要看到企業未來的發展。 在前一篇的財務分析的文章中已經提到過&#xff1a;財務分析只是手段&#xff0c;最終還是要從中發現企業的競爭優勢以及行業的發展趨勢&#xff0c;并以此為基礎&#xff0c;分析企業未來的競爭優勢及…

java與C++的區別

java與C的區別 來源 https://www.cnblogs.com/Allen-rg/p/6692043.html “作為一名C程序員&#xff0c;我們早已掌握了面向對象程序設計的基本概念&#xff0c;而且Java的語法無疑是非常熟悉的。事實上&#xff0c;Java本來就是從C衍生出來的。”  然而&#xff0c;C和Java之…

js調試筆記

js調試方法很多&#xff0c;今天總結一下最實用的的斷點方法: debugger斷點 這個很常見&#xff0c;但許多人不知道其實可以添加條件判斷 if(something){debugger;} source斷點 這個最為常見&#xff0c;不做過多解釋&#xff0c;具體說一下幾個重要圖標: 恢復腳本執行至下一個…

JAVA Spring 事物 ( 已轉賬為例 ) 基于 AOP 注解

<一> 配置為文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springf…

全球視頻監控設備市場規模分析

權威電子行業研究機構IHS Research發布《中國CCTV與視頻監控設備市場研究報告》顯示&#xff0c;2014年全球視頻監控設備市場143億美元&#xff0c;同比增長14.2%。歐洲、美洲、亞洲都增長低于預期;中國增長高于預期&#xff0c;市場總量達57.1億美元;美國市場雖然出貨量在增加…

vue 新窗口打開外鏈接

背景&#xff1a;vue-router 打開外鏈接 如果使用 a 標簽&#xff0c;會默認加上根路由&#xff0c;導致跳轉失效。那么如何讓 a 標簽點擊跳轉到新窗口&#xff1f;解決方法&#xff1a;html 代碼<a class"a-style" click"linkDownload(https://www.baidu.co…

EasyWeChat微信開放平臺第三方平臺接入

目錄實例化微信服務器推送事件預授權獲取預授權 Code獲取預授權 URLAPI 列表使用授權碼換取公眾號的接口調用憑據和授權信息獲取授權方的公眾號帳號基本信息獲取授權方的選項設置信息設置授權方的選項信息調用授權方 API實例化<?phpuse EasyWeChat\Foundation\Application;…

201521145048《Java程序設計》第11周學習總結

1. 本周學習總結 1.1 以你喜歡的方式&#xff08;思維導圖或其他&#xff09;歸納總結多線程相關內容。 2. 書面作業 本次PTA作業題集多線程 Q1.互斥訪問與同步訪問 完成題集4-4(互斥訪問)與4-5(同步訪問) 1.1 除了使用synchronized修飾方法實現互斥同步訪問&#xff0c;還有什…

修改chrome記住密碼后自動填充表單的背景

2019獨角獸企業重金招聘Python工程師標準>>> input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {background-color: rgb(250, 255, 189); /* #FAFFBD; */background-image: none;color: rgb(0, 0, 0); } 轉載于:https://my.oschina.net…

2018年我國視頻監控市場趨勢:智能視頻分析進入規模化

在安防領域中&#xff0c;視頻監控無疑是不可缺少的一環。我國是全球視頻安防行業增速最快的國家之一&#xff0c;近年來我國的視頻監控市場經歷了持續強勁的發展。我國視頻監控市場的高速增長反映了對個人安全及財產保護的擔憂增加。為解決該擔憂&#xff0c;公司及個人機構大…

RUP,XP,敏捷原理

①RUP-- RUP&#xff08;Rational Unified Process&#xff0c;統一軟件開發過程&#xff0c;統一軟件過程)是一個面向對象且基于網絡的程序開發方法論。 根據Rational(Rational Rose和統一建模語言的開發者)的說法&#xff0c;好像一個在線的指導者&#xff0c;它可以為所有方…

1001. A+B Format (20)---------------PAT開始

今天是第一次用Java提交PAT的代碼&#xff1a; 源代碼不能直接提交&#xff0c;需要經過修改&#xff1a; 源代碼&#xff1a; 1 package test;//提交時不能顯示這句2 3 import java.util.Scanner;4 5 public class Test_1001 {//提交時名字要改成Main6 public static void…

第一篇:SpringCloud 構建微服務系統之服務注冊和發現(consul)

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/u010046908/article/details/85260629 今天我們要學習的是consul在soringcloud中的使用。首先學習consul之前&#xff0c;我們應該看看consul的官網&#xff0c;對它有一個初…

2018 年視頻監控企業競爭力分析 海康威視連續七年蟬聯全球第一

視頻監控是安防行業的核心 近年來&#xff0c;隨著我國政府對平安城市、" 雪亮工程 " 以及金融和交通運輸等領域的重視&#xff0c;對于安防產品的需求不斷提升&#xff0c;安防市場規模也在隨之不斷擴大。視頻監控是整個安防系統最重要的物理基礎&#xff0c;視頻監…

java 二維數組

二維數組 多維數組可以簡單地理解為在數組中嵌套數組 二維數組的定義格式 二維數組的定義有很多方式 第一種方式 1 int[][] arr new int[3][4]; 上面的代碼相當于定義了一個3*4的二維數組&#xff0c;即二維數組的長度為3&#xff0c;二維數組中的每個元素又是一個長度為4的數…

Ambient occlusion

https://en.wikipedia.org/wiki/Ambient_occlusion https://gamedev.stackexchange.com/questions/23/what-is-ambient-occlusion http://people.mpi-inf.mpg.de/~ritschel/Papers/SSDO.pdf 注解&#xff1a; 論文&#xff08;http://people.mpi-inf.mpg.de/~ritschel/Papers/S…

利用RTL2832u電視棒芯片追蹤民航飛機軌跡

我國民航飛機通訊的頻率為1090Mhz&#xff0c;而rtl2832u電視棒芯片可以接受的頻率范圍為24 – 1766 MHz&#xff08;通過改制Q通道可以接收0-30Mhz的短波&#xff09;下面開始介紹利用rtl2832u電視棒芯片獲取民航航線 第一步淘寶搜索rtl2832u820T(50塊錢就能買到) <ignore_…

預見2019:《2019年中國視頻監控產業全景圖譜》(附產業布局、政策環境、市場規模、發展趨勢)

2019-2024年中國視頻監控設備行業市場需求預測與投資戰略規劃分析報告2019-2024年中國安防行業市場前瞻與投資戰略規劃分析報告2019-2024年中國智能安防行業市場前瞻與投資戰略規劃分析報告2019-2024年中國智能家居設備行業市場前瞻與投資策略規劃報告2019-2024年中國城市軌道交…

nginx負載均衡 頁面緩存

nginx的upstream目前支持4種方式的分配 1、輪詢&#xff08;默認&#xff09; 每個請求按時間順序逐一分配到不同的后端服務器&#xff0c;如果后端服務器down掉&#xff0c;能自動剔除。 2、weight 指定輪詢幾率&#xff0c;weight和訪問比率成正比&#xff0c;用于后端服務器…