zoukankan      html  css  js  c++  java
  • 六 c# 多线程研究 线程间通信

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

    namespace ThreadTest
    {
        class Program
        {
            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);
            }

        }
    }

  • 相关阅读:
    并行计算第一次作业(openmp)
    数据结构入门第二课(浙大mooc笔记)
    数据结构入门第一课(浙大mooc笔记)
    手把手教你用java实现syslog消息的收发,学不会你打我喽!
    单例模式你真的会了吗(上篇)?
    redis分布式锁,面试官请随便问,我都会
    快手面试归来篇一,希望你看后能过
    程序员不会理财,那跟咸鱼有什么区别?
    人生的康波周期,把握住一次,足以改变命运!
    各大公司面试题分类整理
  • 原文地址:https://www.cnblogs.com/pricks/p/1590546.html
Copyright © 2011-2022 走看看