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