Sleep() 和wait()的区别

Sleep() 和wait()的区别

 

Sleep()

  1. Sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。Sleep使用的时候,线程并不会放弃对象的使用权,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程无法访问。sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒.

Wait()

wait是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。wait会释放当前线程,放弃对象的使用权,让其他的线程可以访问。线程执行wait方法时,需要其他线程调用Monitor.Pulse()或者Monitor.PulseAll() 通过monitor监视器进行唤醒或者是通知等待的队列。

 

所以sleep()wait()方法的最大区别是:
 sleep()睡眠时,保持对象锁,仍然占有该锁;其他线程无法访问
 而wait()睡眠时,释放对象锁。其他线程可以访问

你可能感兴趣的:(ASP.NET网站开发)