Sleep() 和wait()的区别

本文详细对比了Sleep()和wait()两种线程控制方法的区别。Sleep()是线程类Thread的方法,用于使当前线程暂时停止执行,但不会释放对象锁。而wait()则会使线程放弃对象锁进入等待状态,直到被其他线程唤醒。两者都在并发编程中有着重要作用。

Sleep() 和wait()的区别

 

Sleep()

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

Wait()

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值