返回顶部
首页 > 资讯 > 精选 >C#多线程练习题分析
  • 533
分享到

C#多线程练习题分析

2023-06-17 06:06:49 533人浏览 泡泡鱼
摘要

这篇文章主要讲解了“C#多线程练习题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#多线程练习题分析”吧!题目:模拟生产、入库、销售(50分)假设某企业自产、自存、自销,需要将工厂生产

这篇文章主要讲解了“C#多线程练习题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#多线程练习题分析”吧!

题目:模拟生产、入库、销售(50分)

假设某企业自产、自存、自销,需要将工厂生产的各类产品不定时的运到仓库,与此同时,需要将仓库中的货物运往超市和商场中进行销售,请编写一个程序模拟此过程(主要是存取这个过程)。

评分标准:

仓库的存量是固定的,可以假设为一个常量,比如10。(5分)

仓库满的时候,不能再向仓库中存货。(10分)

仓库空的时候,不能卖出货物。(10分)

存货和取货是同时进行的,不要出现先存满再取完货再存满再取完的效果或者存一个取一个再存再取这样的效果。(15分)

思路清晰,输出工整,编码规范,有正确的异常处理。(10分)

用多线程模拟仓库存储和销售的过程代码如下:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.IO;  namespace MultiThreadStore {     class Program     {         //入口         static void Main(string[] args)         {             Goods goods = new Goods();             Thread storeGoods = new Thread(new ParameterizedThreadStart(store));             Thread sellGoods = new Thread(new ParameterizedThreadStart(sell));             storeGoods.Start(goods);             sellGoods.Start(goods);             Console.ReadLine();         }         //存货方法         private static void store(object obj)         {             bool storeFlag = true;             Random random = new Random();             while (storeFlag)             {                 try                 {                     Goods goods = obj as Goods;                     if (goods.Num < goods.MaxNum)                     {                         goods.Num++;                         Console.WriteLine("Store a goods, " + goods.Num + " goods left!");                     }                     else                      {                         Console.WriteLine("The store is full now.");                     }                     Thread.Sleep(random.Next(500, 1000));                 }                 catch (Exception ex)                 {                     WriteLog(ex);                     storeFlag = false;                 }             }         }         //卖货方法         public static void sell(object obj)          {             bool sellFlag = true;             Random random = new Random();             while (sellFlag)             {                 try                 {                     Goods goods = obj as Goods;                     if (goods.Num > 0)                     {                         goods.Num--;                         Console.WriteLine("Sell a goods, " + goods.Num + " goods left!");                     }                     else                      {                         Console.WriteLine("There are no goods now.");                     }                     Thread.Sleep(random.Next(1000, 4000));                 }                 catch (Exception ex)                 {                     WriteLog(ex);                     sellFlag = false;                 }             }         }         //打log方法         private static void WriteLog(Exception ex)         {             string logUrl = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\MuliThreadStorelog.txt";             if (File.Exists(@logUrl))             {                 using (FileStream fs = new FileStream(logUrl, FileMode.Append))                 {                     using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))                     {                         try                         {                             sw.Write(ex);                         }                         catch (Exception ex1)                         {                             WriteLog(ex1);                         }                         finally                         {                             sw.Close();                             fs.Close();                         }                     }                 }             }             else             {                 using (FileStream fs = new FileStream(logUrl, FileMode.CreateNew))                 {                     using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))                     {                         try                         {                             sw.Write(ex);                         }                         catch (Exception ex1)                         {                             WriteLog(ex1);                         }                         finally                         {                             sw.Close();                             fs.Close();                         }                     }                 }             }         }     }     //货品类     class Goods      {         public int Num { get; set; }         public int MaxNum { get; set; }         public Goods()          {             Num = 10;             MaxNum = 50;         }          } }

运行截图:

C#多线程练习题分析

感谢各位的阅读,以上就是“C#多线程练习题分析”的内容了,经过本文的学习后,相信大家对C#多线程练习题分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C#多线程练习题分析

本文链接: https://lsjlt.com/news/287541.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#多线程练习题分析
    这篇文章主要讲解了“C#多线程练习题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#多线程练习题分析”吧!题目:模拟生产、入库、销售(50分)假设某企业自产、自存、自销,需要将工厂生产...
    99+
    2023-06-17
  • C#多线程举例分析
    这篇文章主要讲解了“C#多线程举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#多线程举例分析”吧!线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中...
    99+
    2023-06-22
  • C#多线程之线程锁实例分析
    这篇文章主要介绍了C#多线程之线程锁实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#多线程之线程锁实例分析文章都会有所收获,下面我们一起来看看吧。一、Mutex类“mutex”是术语“互相排斥(mut...
    99+
    2023-06-30
  • 习题22:更多的练习
    练习代码如下# coding: utf-8 __author__ = 'www.py3study.com' print("Let's practice&nb...
    99+
    2023-01-30
    习题 更多
  • 习题23:更多更多的练习
    代码如下# coding: utf-8__author__ = 'www.py3study.com'def break_words(stuff):    '''This funct...
    99+
    2023-01-30
    更多 习题
  • 【Java练习题汇总】《第一行代码JAVA》多线程篇,汇总Java练习题——线程及多线程概念、Thread 类及 Runnable 接口、线程状态、synchronized同步操作...
    Java练习题 · 多线程篇 1️⃣ 多线程篇 1️⃣ 多线程篇 一、填空题 Java 多线程可以依靠________ 、________ 和________ 三种方式实现。多个线程操作同一资源的时候需要注意________,依...
    99+
    2023-08-16
    java 开发语言 经验分享 java-ee jvm 后端
  • Java日常练习题的示例分析
    这篇文章将为大家详细讲解有关Java日常练习题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、AWT 中用来表示文本框的类是 ( )正确答案: A TextFieldMenuLabelList...
    99+
    2023-06-20
  • C#多线程中线程同步的示例分析
    这篇文章将为大家详细讲解有关C#多线程中线程同步的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言我们先来看下面一个例子:using System;using Syste...
    99+
    2023-06-29
  • 深入学习C#多线程
    目录一、基本概念1、进程2、线程二、多线程2.1System.Threading.Thread类2.2 线程的常用属性2.2.1线程的标识符2.2.2线程的优先级别2.2....
    99+
    2024-04-02
  • C# .NET多线程应用举例分析
    这篇文章主要介绍“C# .NET多线程应用举例分析”,在日常操作中,相信很多人在C# .NET多线程应用举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# .NET多线程应用举例分析”的疑惑有所帮助!...
    99+
    2023-06-17
  • Java多线程面试题实例分析
    这篇文章主要介绍了Java多线程面试题实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java多线程面试题实例分析文章都会有所收获,下面我们一起来看看吧。问题一A线程正在执行一个对象中的同步方法,B线程是...
    99+
    2023-06-29
  • Mysql多表练习题30道
    根据上一篇文章建立的表,我们来做一些多表练习: 没建立表的可以点击此链接去建立练习用的表: 目录 1.查询“1”号学生的姓名和各科成绩: 2.查询各个学科的平均成绩和最高成绩: 3.查询所有姓张的同学的各科成绩: 4.查询每个同学的最高成...
    99+
    2023-09-01
    数据库 sql oracle mysql
  • Java多线程中线程安全问题的示例分析
    这篇文章主要介绍了Java多线程中线程安全问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 什么是线程安全和线程不安全?什么是线程安全呢?当多个线程并发访问某...
    99+
    2023-06-29
  • C++多线程编程中的并发问题解析
    C++多线程编程中的并发问题解析随着计算机硬件的不断发展,多核处理器已经成为了主流。在这种情况下,使用多线程来充分利用多核处理器的性能,成为了程序开发中的一项重要技术。然而,在多线程编程中,由于多个线程之间的并发操作,常常会导致一些问题,这...
    99+
    2023-10-22
    解析 并发问题 C++多线程编程
  • C#中异步多线程的示例分析
    这篇文章主要介绍C#中异步多线程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!进程、线程1. 进程首先了解,什么是线程 即一个应用程序运行时,占用资源的综合是一个进程。Windows 任务管理器里面可以看到...
    99+
    2023-06-25
  • C#多线程死锁实例代码分析
    这篇文章主要介绍“C#多线程死锁实例代码分析”,在日常操作中,相信很多人在C#多线程死锁实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#多线程死锁实例代码分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-30
  • 【python】编程学习练习题--3
      1 #利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:代码:  2    3 from functools import reduce   4 str = '123.456'...
    99+
    2023-01-31
    练习题 python
  • 高价值Java多线程面试题分析
    问题一 A线程正在执行一个对象中的同步方法,B线程是否可以同时执行同一个对象中的非同步方法? 可以,两个线程运行所需资源不同,不需要抢占。 案例一、 package duoxian...
    99+
    2024-04-02
  • C++实现LeetCode数组练习题
    目录1、存在重复元素2、最大子序和3、两数之和4、合并两个有序数组5、两个数组的交集II6、买卖股票的最佳时机7、杨辉三角8、重塑矩阵9、有效的数独10、矩阵置零总结1、存在重复元素...
    99+
    2024-04-02
  • C++链表练习题有哪些
    这篇文章主要为大家展示了“C++链表练习题有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++链表练习题有哪些”这篇文章吧。反转单链表题目1:给你单链表的头节点 head&nbs...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作