Sleep() 和wait()的区别
Sleep()
- Sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。Sleep使用的时候,线程并不会放弃对象的使用权,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程无法访问。sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒.
Wait()
wait是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。wait会释放当前线程,放弃对象的使用权,让其他的线程也可以访问。线程执行wait方法时,需要其他线程调用Monitor.Pulse()或者Monitor.PulseAll() 通过monitor监视器进行唤醒或者是通知等待的队列。
所以sleep()和wait()方法的最大区别是:
sleep()睡眠时,保持对象锁,仍然占有该锁;其他线程无法访问
而wait()睡眠时,释放对象锁。其他线程可以访问
本文详细对比了Sleep()和wait()两种线程控制方法的区别。Sleep()是线程类Thread的方法,用于使当前线程暂时停止执行,但不会释放对象锁。而wait()则会使线程放弃对象锁进入等待状态,直到被其他线程唤醒。两者都在并发编程中有着重要作用。

3万+

被折叠的 条评论
为什么被折叠?



