解释Java中wait和sleep方法的不同?
Java中wait()和sleep()的主要区别:
- 所属类不同:
- wait()是Object类的方法
- sleep()是Thread类的静态方法
- 锁行为不同:
- wait()会释放对象锁
- sleep()不会释放任何锁
- 唤醒机制:
- wait()需要被notify()/notifyAll()唤醒
- sleep()时间到后自动恢复
- 使用场景:
- wait()用于线程间通信
- sleep()用于暂停当前线程
- 异常处理:
- 两者都会抛出InterruptedException
简单记:wait放锁等通知,sleep持锁等时间。