对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait。方法,则是属于 Object类中的。
sleep。方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对 此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
两者都可以暂停线程的执行
1、 类的不同:
sleep()是Thread线程类的静态方法,wait()是Object类的方法。
2、 是否释放锁:
sleep()不释放锁;wait()释放锁。
3、 用途不同:
Wait通常被用于线程间交互/通信,sleep通常被用于暂停执行。
4、 用法不同:
wait()方法被调用后,线程不会自动苏醒,需要别的线程调用同一个对象上的notify()或 者notifyAll()方法。sleep()方法执行完成后,线程会自动苏醒。或者可以使用wait (long timeout)超时后线程会自动苏醒。
Was this helpful?
0 / 0