eep和wait都是使线程暂时停止执行的方法,但它们有很大的不同。

1. sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。

而wait,它是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。
2.Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。

而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其他的线程可以访问。

3.线程执行wait方法时,需要其他线程调用Monitor.Pulse()或者Monitor.PulseAll()进行唤醒或者说是通知等待的队列。

而sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒.

参考代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace ConsoleApplication1
{ class Program
{
static readonly object _locker = new object(); static bool _go;
static void Main(string[] args)
{
new Thread(Work).Start(); //新线程会被阻塞,因为_go == false
Console.ReadLine(); //等待用户输入
lock (_locker)
{
_go = true; //改变阻塞条件
Monitor.Pulse(_locker); //通知等待的队列。
}
Thread.Sleep(1000);
} static void Work()
{
lock (_locker)
{
while (!_go) //只要_go字段是false,就等待。
Monitor.Wait(_locker); //在等待的时候,锁已经被释放了。
}
Console.WriteLine("被唤醒了");
} }
}

【转自】http://blog.csdn.net/zhuoyue008/article/details/53382194

【转载】C# sleep 和wait的区别的更多相关文章

  1. 转载:Ajax及 GET、POST 区别

    转载:Ajax及 GET.POST 区别 收获: xhr.setRequestHeader(), xhr.getResponseHeader() 可以设置和获取请求头/响应头信息; new FormD ...

  2. [转载]java int与integer的区别

    声明: 本篇文章属于转载文章,来源:

  3. 【转载】new和malloc的区别

    本篇随笔为转载,原贴地址:C++中new和malloc的十点区别. 前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答n ...

  4. 【转载】gcc和g++的区别

    [说明]本文转载自 静心 的文章 http://blog.163.com/lu_jun520/blog/static/5699613420116205148239/ 一般linux系统都自带了gcc编 ...

  5. Java_类和对象(完美总结)_转载_覆盖和隐藏的区别,覆盖就不能使用了,而隐藏提供全局方法名或者全局变量名还可以使用

    转载自海子:http://www.cnblogs.com/dolphin0520/p/3803432.html Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封 ...

  6. [转载] Rss 与 Feed 的概念区别

    转载自http://www.chinaz.com/news/2011/0831/207961.shtml 可能很多刚刚接触博客的童鞋们,也和我一样不太了解:rss和feed概念或者说不了解rss和fe ...

  7. 【转载】ARM与单片机的区别

    前几天在博客园的博问模块上面发布了一个博问,可能是我问题描述有些问题,被一个园友指出,ARM与单片机是不同的.所以我特地查了一下ARM与单片机的区别,之前一直以为ARM就是加强版的单片机,stm32无 ...

  8. 【转载】TCP 与 UDP 的区别

    原文地址:TCP 与 UDP 的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信 ...

  9. 【转载】CreateThread与_beginthreadex本质区别

    转载文章,原文地址:http://blog.csdn.net/morewindows/article/details/7421759 本文将带领你与多线程作第一次亲密接触,并深入分析CreateThr ...

  10. 【转载】CentOS和Ubuntu的区别

    CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代 ...

随机推荐

  1. Leetcode 377.组合总和IV

    组合总和IV 给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数. 示例: nums = [1, 2, 3] target = 4 所有可能的组合为: (1, 1, 1, ...

  2. 【JavaScript 3—基础知识点】:运算符

    导读:其实看到这个运算符的学习,很有一种熟悉感,因为在总体看来,和之前的C++有很多类似的地方,但当时觉得简单,没有总结.所以,这次一定得总结了.其实,知识的罗列,基础的积累,在学习中也很重要. 一. ...

  3. 九度oj 题目1159:坠落的蚂蚁

    题目描述: 一根长度为1米的木棒上有若干只蚂蚁在爬动.它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右.如果两只蚂蚁碰头,则它们立即交换速度并继续爬动.三只蚂蚁碰头,则两边的蚂蚁交换速度, ...

  4. BZOJ2726 [SDOI2012]任务安排 【斜率优化 + cdq分治】

    题目 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3...N.这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i ...

  5. 算法复习——计算几何基础(zoj1081)

    题目: Statement of the Problem Several drawing applications allow us to draw polygons and almost all o ...

  6. KS求有向图强连通分量模板

    #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; *maxn; struct no ...

  7. mybatis如何在控制台打印执行的sql语句

    log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log ...

  8. [Hihocoder 1289] 403 Forbidden (微软2016校园招聘4月在线笔试)

    传送门 #1289 : 403 Forbidden 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi runs a web server. Someti ...

  9. 三类(创结行),23种设计模式,速记理解法!PHP

    一,创建型设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳 ...

  10. 自定义header参数时的命名要求

    HTTP头是可以包含英文字母([A-Za-z]).数字([0-9]).连接号(-)hyphens, 也可义是下划线(_).在使用nginx的时候应该避免使用包含下划线的HTTP头.主要的原因有以下2点 ...