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(); } static void Work() { lock (_locker) { while (!_go) //只要_go字段是false,就等待。 Monitor.Wait(_locker); //在等待的时候,锁已经被释放了。 } Console.WriteLine("被唤醒了"); } } }
sleep:等待一定时间之后唤醒
wait :等待,等别人通知唤醒