由于最近需要面试,整理了一下,将这两种方法的比较回顾下:
sleep()方法与wait()方法都可以让线程暂停一段时间,但sleep()方法控制范围是由当前线程决定的,而wait()方法是线程之间的通讯问题。下面分类介绍:
来源类:sleep()是Thread类的静态方法
wait()是Object的方法,可以对任意一个对象调用wait()方法。
使用范围:sleep()可以在任何地方使用,但必须捕获异常
wait()只能在同步控制方法或同步控制块里面使用,不需要捕获异常
锁:sleep()不释放锁,不出让资源系统
wait()释放锁,进入线程等待池等待,出让系统资源
唤醒:sleep()将一个线程睡眠病指定时间自动醒,如果时间不到,可以调用interreput()来强行打断
wait()将一个线程挂起,直到超时或者该线程被唤醒

本文对比了Thread类的静态方法sleep()与Object类的方法wait()。sleep()控制当前线程暂停,不释放锁;wait()则释放锁并使线程进入等待池,需在同步代码块中调用。

460

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



