成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#中一道關于多線程的基礎練習題——模擬倉庫存銷過程

開發 后端
假設某企業自產、自存、自銷,需要將工廠生產的各類產品不定時的運到倉庫,與此同時,需要將倉庫中的貨物運往超市和商場中進行銷售,請編寫一個程序模擬此過程(主要是存取這個過程)。

題目:模擬生產、入庫、銷售(50分)

 假設某企業自產、自存、自銷,需要將工廠生產的各類產品不定時的運到倉庫,與此同時,需要將倉庫中的貨物運往超市和商場中進行銷售,請編寫一個程序模擬此過程(主要是存取這個過程)。

評分標準:

1. 倉庫的存量是固定的,可以假設為一個常量,比如10。(5分)

2. 倉庫滿的時候,不能再向倉庫中存貨。(10分)

3. 倉庫空的時候,不能賣出貨物。(10分)

4. 存貨和取貨是同時進行的,不要出現先存滿再取完貨再存滿再取完的效果或者存一個取一個再存再取這樣的效果。(15分)

5. 思路清晰,輸出工整,編碼規范,有正確的異常處理。(10分)

用多線程模擬倉庫存儲和銷售的過程代碼如下:

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.Threading.Tasks; 
  6. using System.Threading; 
  7. using System.IO; 
  8.  
  9. namespace MultiThreadStore 
  10.     class Program 
  11.     { 
  12.         //入口 
  13.         static void Main(string[] args) 
  14.         { 
  15.             Goods goods = new Goods(); 
  16.             Thread storeGoods = new Thread(new ParameterizedThreadStart(store)); 
  17.             Thread sellGoods = new Thread(new ParameterizedThreadStart(sell)); 
  18.             storeGoods.Start(goods); 
  19.             sellGoods.Start(goods); 
  20.             Console.ReadLine(); 
  21.         } 
  22.         //存貨方法 
  23.         private static void store(object obj) 
  24.         { 
  25.             bool storeFlag = true
  26.             Random random = new Random(); 
  27.             while (storeFlag) 
  28.             { 
  29.                 try 
  30.                 { 
  31.                     Goods goods = obj as Goods; 
  32.                     if (goods.Num < goods.MaxNum) 
  33.                     { 
  34.                         goods.Num++; 
  35.                         Console.WriteLine("Store a goods, " + goods.Num + " goods left!"); 
  36.                     } 
  37.                     else  
  38.                     { 
  39.                         Console.WriteLine("The store is full now."); 
  40.                     } 
  41.                     Thread.Sleep(random.Next(500, 1000)); 
  42.                 } 
  43.                 catch (Exception ex) 
  44.                 { 
  45.                     WriteLog(ex); 
  46.                     storeFlag = false
  47.                 } 
  48.             } 
  49.         } 
  50.         //賣貨方法 
  51.         public static void sell(object obj)  
  52.         { 
  53.             bool sellFlag = true
  54.             Random random = new Random(); 
  55.             while (sellFlag) 
  56.             { 
  57.                 try 
  58.                 { 
  59.                     Goods goods = obj as Goods; 
  60.                     if (goods.Num > 0) 
  61.                     { 
  62.                         goods.Num--; 
  63.                         Console.WriteLine("Sell a goods, " + goods.Num + " goods left!"); 
  64.                     } 
  65.                     else  
  66.                     { 
  67.                         Console.WriteLine("There are no goods now."); 
  68.                     } 
  69.                     Thread.Sleep(random.Next(1000, 4000)); 
  70.                 } 
  71.                 catch (Exception ex) 
  72.                 { 
  73.                     WriteLog(ex); 
  74.                     sellFlag = false
  75.                 } 
  76.             } 
  77.         } 
  78.         //打log方法 
  79.         private static void WriteLog(Exception ex) 
  80.         { 
  81.             string logUrl = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\MuliThreadStorelog.txt"
  82.             if (File.Exists(@logUrl)) 
  83.             { 
  84.                 using (FileStream fs = new FileStream(logUrl, FileMode.Append)) 
  85.                 { 
  86.                     using (StreamWriter sw = new StreamWriter(fs, Encoding.Default)) 
  87.                     { 
  88.                         try 
  89.                         { 
  90.                             sw.Write(ex); 
  91.                         } 
  92.                         catch (Exception ex1) 
  93.                         { 
  94.                             WriteLog(ex1); 
  95.                         } 
  96.                         finally 
  97.                         { 
  98.                             sw.Close(); 
  99.                             fs.Close(); 
  100.                         } 
  101.                     } 
  102.                 } 
  103.             } 
  104.             else 
  105.             { 
  106.                 using (FileStream fs = new FileStream(logUrl, FileMode.CreateNew)) 
  107.                 { 
  108.                     using (StreamWriter sw = new StreamWriter(fs, Encoding.Default)) 
  109.                     { 
  110.                         try 
  111.                         { 
  112.                             sw.Write(ex); 
  113.                         } 
  114.                         catch (Exception ex1) 
  115.                         { 
  116.                             WriteLog(ex1); 
  117.                         } 
  118.                         finally 
  119.                         { 
  120.                             sw.Close(); 
  121.                             fs.Close(); 
  122.                         } 
  123.                     } 
  124.                 } 
  125.             } 
  126.         } 
  127.     } 
  128.     //貨品類 
  129.     class Goods  
  130.     { 
  131.         public int Num { getset; } 
  132.         public int MaxNum { getset; } 
  133.         public Goods()  
  134.         { 
  135.             Num = 10; 
  136.             MaxNum = 50; 
  137.         }      
  138.     } 
運行截圖:

責任編輯:王雪燕 來源: 博客園
相關推薦

2012-05-18 11:17:58

Java多線程

2009-08-11 10:12:07

C#算法

2009-08-11 14:59:57

一道面試題C#算法

2021-03-02 11:29:50

算法算法分析前端

2009-08-11 15:09:44

一道面試題C#算法

2009-08-12 18:04:44

編寫C#多線程

2023-02-04 18:24:10

SeataJava業務

2024-06-11 00:00:30

C#編程線程

2024-10-21 16:59:37

C#編程多線程

2009-08-26 18:13:55

C#多線程lock

2011-04-25 14:42:10

C#lock

2022-04-08 07:52:17

CSS面試題HTML

2009-08-28 16:43:57

C#多線程學習

2009-09-04 15:09:48

C#多線程啟動Squa

2022-03-16 16:13:50

數據倉庫云供應商

2024-03-18 13:32:11

2013-07-16 10:12:14

iOS多線程多線程概念多線程入門

2009-09-01 17:15:42

C#多線程應用

2015-09-02 14:09:19

面試題程序設計

2013-10-15 09:48:03

C++Lambda函數式編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久 | 欧美日韩一卡二卡 | 日韩欧美在线观看视频网站 | 欧美一级毛片久久99精品蜜桃 | 午夜视频在线 | 99国产精品视频免费观看一公开 | 日韩一区二区三区视频在线观看 | 在线观看亚洲专区 | 日本一区二区三区免费观看 | 久久久精品视频免费看 | 欧美黄视频 | 国产在线精品一区二区 | 精品视频一区二区 | 99在线国产 | 欧洲亚洲精品久久久久 | 国产精品国产自产拍高清 | 亚洲一区二区三区视频免费观看 | 97免费在线观看视频 | 综合色站导航 | 久久精品99久久 | 欧美久久久电影 | 欧美精品一区二区三区在线四季 | 欧美日韩在线一区二区三区 | 看a网站 | 国产精品一区二区福利视频 | 毛片网络 | 久久91| 91传媒在线观看 | 色站综合| 成年人黄色一级片 | 北条麻妃99精品青青久久 | 久久久久久中文字幕 | 超碰网址| 欧美综合久久久 | 国产精品福利视频 | 亚洲午夜精品视频 | 亚洲免费在线 | 国产精品视屏 | 久久精品国产亚洲一区二区 | 国产精品一区二区在线 | 夜夜草|