using System;
using System.Threading; namespace ConsoleApp1
{
class MyThread
{
Thread t = null;
ManualResetEvent manualEvent = new ManualResetEvent(true);//为true,一开始就可以执行
private void Run()
{
while (true)
{
this.manualEvent.WaitOne();
Console.WriteLine("线程id:{0}", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep();
}
} public void Start()
{
this.manualEvent.Set();
} public void Stop()
{
this.manualEvent.Reset();
} public MyThread()
{
t = new Thread(this.Run);
t.Start();
} } class Program
{
static void Main(string[] args)
{
MyThread myt = new MyThread();
while (true)
{
Console.WriteLine("输入 stop 后台线程挂起 start 开始执行!");
string str = Console.ReadLine();
if (str.ToLower().Trim() == "stop")
{
Console.WriteLine("线程停止运行...\n");
myt.Stop();
}
if (str.ToLower().Trim() == "start")
{
Console.WriteLine("线程开启运行...\n");
myt.Start();
}
}
} }
}

ManualResetEvent 线程通信的更多相关文章

  1. C#线程同步--线程通信

    问题抽象:当某个操作的执行必须依赖于另一个操作的完成时,需要有个机制来保证这种先后关系.线程通信方案:ManualResetEventSlim.ManualResetEvent.AutoResetEv ...

  2. 第23章 java线程通信——生产者/消费者模型案例

    第23章 java线程通信--生产者/消费者模型案例 1.案例: package com.rocco; /** * 生产者消费者问题,涉及到几个类 * 第一,这个问题本身就是一个类,即主类 * 第二, ...

  3. Linux下c开发 之 线程通信(转)

    Linux下c开发 之 线程通信(转) 1.Linux“线程” 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linu ...

  4. C# 线程通信 一

    C#多线程通信 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  5. java多线程-线程通信

    线程通信的目标是使线程间能够互相发送信号.另一方面,线程通信使线程能够等待其他线程的信号. 通过共享对象通信 忙等待 wait(),notify()和 notifyAll() 丢失的信号 假唤醒 多线 ...

  6. Java---Condition控制线程通信

    java中控制线程通信的方法有:1.传统的方式:利用synchronized关键字来保证同步,结合wait(),notify(),notifyAll()控制线程通信.不灵活. 2.利用Conditio ...

  7. Java 线程通信

    线程通信用来保证线程协调运行,一般在做线程同步的时候才需要考虑线程通信的问题. 1.传统的线程通信 通常利用Objeclt类提供的三个方法: wait() 导致当前线程等待,并释放该同步监视器的锁定, ...

  8. Java核心知识点学习----使用Condition控制线程通信

    一.需求 实现线程间的通信,主线程循环3次后,子线程2循环2次,子线程3循环3次,然后主线程接着循环3次,如此循环3次. 即:A->B->C---A->B->C---A-> ...

  9. java笔记--关于线程通信

    关于线程通信 使用多线程编程的一个重要原因就是线程间通信的代价比较小 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3897773.h ...

随机推荐

  1. pom----Maven内置属性及使用

    Maven共有6类属性: 内置属性(Maven预定义,用户可以直接使用) ${basedir}表示项目根目录,即包含pom.xml文件的目录; ${version}表示项目版本; ${project. ...

  2. 从一个子视图或者一个View中刷新其他UITableView

    被问到了一个问题:如何从一个子视图或者一个View中刷新其他UITableView,常规的写法可能是这样的 TestTVC*testTVC =[[TestTVC alloc] init];[testT ...

  3. 【原】Coursera—Andrew Ng机器学习—Week 9 习题—异常检测

    [1]异常检测 [2]高斯分布 [3]高斯分布 [4] 异常检测 [5]特征选择 [6] [7]多变量高斯分布 Answer: ACD B 错误.需要矩阵Σ可逆,则要求m>n  测验1 Answ ...

  4. js对象的几种创建方式和js实现继承的方式[转]

    一.js对象的创建方式 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); ...

  5. glBuffers & glVertexPtrs

    [glBuffers & glVertexPtrs] 1.glBuffers使得数据可以存储在显示存中. GLuint VBO; glGenBuffers(1, &VBO); glBi ...

  6. 阿里云 mysql 远程登录权限

    [mysql中配置] 授权法: 1.登录到mysql中,为root进行远程访问的授权,执行下面的命令:  mysql> GRANT ALL PRIVILEGES ON *.* TO root@& ...

  7. freemaker优缺点

    1.什么是FreeMarker?FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.FreeMarker被设计用来生成HTMLWeb页面,特别是基于MVC模式的 ...

  8. pkg-config的妙用

    1.每个lib下都会有个pkg-config文件夹,里面有相应pc文件 修改里面内容可以改变pkg-config显示 2.将.pc文件所在路径添加到PKG_CONFIG_PATH中如: export ...

  9. 隐藏在default construct后面的是什么

    C++新手很容易陷入两个认识上的误区: 1.任何类如果不显示的定义一个构造函数那么编译器就会构造出一个默认构造函数. 2.默认构造函数负责类的所有数据成员的初始化,显然不是这样的. 为什么不是这样的, ...

  10. 洛谷 P3478 [POI2008]STA-Station

    题目描述 The first stage of train system reform (that has been described in the problem Railways of the ...