代码

using System;
using System.Text;
using System.Threading;

namespace ReadKey
{
class Program3
{
static void Main(string[] args)
{
Student student = new Student();
new Thread(new ThreadStart(new Thread1(student).run)).Start();//添加信息
new Thread(new ThreadStart(new Thread2(student).run)).Start();//读取信息
}
}

/// <summary>
/// 向Student类加添加信息
/// </summary>
public class Thread1
{
private Student student;
public Thread1(Student student)
{
this.student = student;
}
public void run()
{
int i = 0;
while (true)
{
if (i == 0)
student.Add("jxncwzb", 23);
else
student.Add("jxncwzb++", 22);
i = (i + 1) % 2;
}
}
}

/// <summary>
/// 读取Thread1干才添加的信息
/// </summary>
public class Thread2
{
private Student student;
public Thread2(Student student)
{
this.student = student;
}
public void run()
{
while (true)
{
student.GetInfo();
}
}
}

public class Student
{
private string name;
private int age;
private bool isRun = false;

public void Add(string name, int age)
{
Monitor.Enter(this);
if (isRun)
Monitor.Wait(this);
this.name = name;
//Thread.Sleep(10);
this.age = age;
this.isRun = true;
Monitor.Pulse(this);
Monitor.Exit(this);
}

public void GetInfo()
{
Monitor.Enter(this);
if (!isRun)
Monitor.Wait(this);
Console.Write("姓名:" + name);
Console.WriteLine("&年龄:" + age.ToString());
this.isRun = false;
Monitor.Pulse(this);
Monitor.Exit(this);
}

}
}

转载于:https://www.cnblogs.com/shineqiujuan/archive/2010/03/11/1683219.html

C# Monitor 使用 多线程通信相关推荐

  1. udp多线程 java_UDP实现多线程通信

    UDP实现多线程通信 //接收进程 import java.io.IOException; import java.net.DatagramPacket; import java.net.Datagr ...

  2. java通信项目_Java项目中的多线程通信如何利用Socket实现

    Java项目中的多线程通信如何利用Socket实现 发布时间:2020-11-24 16:44:40 来源:亿速云 阅读:96 作者:Leah 这期内容当中小编将会给大家带来有关Java项目中的多线程 ...

  3. linux下串口多线程通信 ,多串口收发数据错乱问题解决办法

    最近在写AM335x平台的串口测试工具,最开始的时候写的第一版本,测试一直很ok,但是存在一些缺陷,于是就想改进一下,没想到后面在新的板子测试,竟然发现了以个很致命的问题,在旧系统旧内核测试一切正常, ...

  4. java程序假死_分析一个常见的java多线程通信问题(假死现象)

    一件复杂的事,一个人如果不能做,两个人又做的不好,一群人就可能很好的解决了.对于线程来说也是,通过多个线程就能完成一个更复杂的功能,这就需要多个线程协作,协作就需要交流,但是交流总是会出问题的.在这篇 ...

  5. 母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列

    目录 简介 一对一生产和消费:一只母鸡和叫练 wait/notify Lock条件队列 多对多生产和消费:2只母鸡和叫练/叫练媳妇 wait/notifyAll Lock条件队列 Lock和synch ...

  6. 计算机网络多线程通信,多线程技术的PLC与PC的通讯方式

    基于多线程技术的PLC与PC的通讯方式 1.系统构成 推进系统中,PC机选用工控计算机.它是整个控制系统的核心,是上位机.其主要利用良好的图形用户界面,显示从PLC接收的开关量和控制手柄的位置,进行一 ...

  7. 多进程与多线程通信同步机制

    多进程通信方式 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系. 命名管道FIFO:有名管道也是半双工的通信方式,但 ...

  8. 一道多线程通信实例分析

    程序如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3 ...

  9. java多线程通信_Java多线程-线程通信

    原标题:Java多线程-线程通信 通信的方式 要想实现多个线程之间的协同,如:线程执行先后顺序.获取某个线程执行的结果等等.涉及到线程之间的相互通信,分为下面四类: 文件共享 网络共享 共享变量 JD ...

最新文章

  1. 兼容Silverlight4的实用的Silverlight可拖放工具类源代码
  2. ssm read time out的原因_有高血压的人,认清这4点,很多高血压一直降不下来,原因在这里...
  3. SAP PM工作清单管理
  4. C++获取当前时间和计算程序运行时间的方法
  5. idea搭建简单spring-boot项目
  6. fatal error C1021: 无效的预处理器命令“warning”
  7. tc-core-library-js学习笔记
  8. 锤子手机使用2年,聊聊锤子手机,坚果手机功能使用体验
  9. mysql 循环创建列_mysql – 查询列中的循环值
  10. 【Qt调试技巧】Profile配置使用及一些坑
  11. 三维数组设置索引_python3三维数据结构 —— panel
  12. matlab在电力系统潮流计算程序,大神们,求个电力系统潮流计算的matlab程序。
  13. MySQL中InnoDB引擎对索引的扩展
  14. python多继承_Python多继承,__init__
  15. python with关键字_python with关键字学习
  16. 自定义头文件之二------hlib.h(慢慢更新)
  17. 条件查询时,如果有的输入框不输入,后台应该怎么处理?
  18. Centos7安装整合Apache+PHP,安装nginx后nginx无法解析.php文件
  19. js把html转成json,js字符串转成JSON
  20. 字节跳动面试真题- 整数反转

热门文章

  1. python urllib.request 爬虫 数据处理-python爬虫1--urllib请求库之request模块
  2. 自学python视频教学-想自学Python,不知道网络上的教学视频有用没有?
  3. python自学视频-python自学视频看这个就对了
  4. python语言有什么用-Python到底有什么用?为什么那么多人都在学Python?
  5. python官网下载步骤视频-Python 实现视频下载
  6. 爬虫好学吗python-爬虫Python入门好学吗?学什么?
  7. python中文叫什么意思-在python中%是什么意思
  8. python工作好找吗-python工作好找吗
  9. python三层装饰器-python开发学习day16 (三层装饰器;迭代器)
  10. 熟练掌握python是什么概念-Python学到什么程度可以面试工作?