最近在看一個(gè)同事的代碼,代碼的本意是在main方法中開(kāi)啟10個(gè)線程,用這10個(gè)線程來(lái)處理一批業(yè)務(wù)邏輯,在某一時(shí)刻當(dāng)你命令console退出的時(shí)候,這個(gè)
時(shí)候不是立即讓console退出,而是需要等待10個(gè)線程把檢測(cè)狀態(tài)之后的業(yè)務(wù)邏輯執(zhí)行完之后再退出,這樣做是有道理的,如果強(qiáng)行退出會(huì)有可能造成子線程的業(yè)
務(wù)數(shù)據(jù)損壞,沒(méi)毛病吧,業(yè)務(wù)邏輯大概就是這樣。
一:現(xiàn)實(shí)場(chǎng)景
由于真實(shí)場(chǎng)景的代碼比較復(fù)雜和繁瑣,為了方便演示,我將同事所寫(xiě)的代碼抽象一下,類(lèi)似下面這樣,看好了咯~~~
1 class Program 2 { 3 private static int workThreadNums = 0; 4 5 private static bool isStop = false; 6 7 static void Main(string[] args) 8 { 9