a.属于类不同,sleep属于Thread类的静态方法,wait属于Object的超类的成员方法
b.sleep时需要指定睡眠时间,且睡眠过程不会释放锁,让出cpu执行权,wait方法可以指定时间也可以不指定,调用后会释放锁,等到其它线程调用notify或者notifyAll方法,或者等待时间到后才会让线程进入就绪状态,抢占cpu执行权(但是使用notify时,只能唤醒等待当前对象锁的随机一个线程,使用时特别注意)
c.sleep需要抛出异常,而wait不需要
d.使用位置不同,sleep可以在任意位置使用,而wait只能在同步方法或者同步代码块中使用。
注意:sleep不会释放锁,指的是不会释放线程锁,即当前线程只是做了暂停而已,与对象锁并没有直接关系,如果有同步资源的锁,别的线程想使用这个锁时,必须等待sleep的线程执行完释放锁,如果没有资源同步的锁,那么别的线程任然可以使用当前资源。
sleep和wait的区别
最新推荐文章于 2023-12-12 22:47:13 发布