- sleep()方法是数据Thread类的;wait()方法属于Object类
- sleep()在任何地方都可以使用,使用时需要捕获InterruptedException异常;wait()方法必须放在Synchronized同步块中执行,同样需要捕获InterruptedException异常。
- sleep()方法让线程休眠指定时间,到了时间会自动执行;wait()方法则是需要notify()、notifyAll()方法唤醒,获取对象锁后在执行,或者可以使用wait(long millis)方法,时间一到无需其他线程唤醒,也会重新竞争对象锁继续执行。
- sleep()一般用户线程休眠或者轮循暂停操作;wait()多用于多线程间通讯。
- sleep()不会释放对对象锁的持有;wait()释放当前线程对lock对象锁的持有
- sleep()会让出CPU执行时间,强制切换上下文;wait()不一定,wait()后还是可以重新竞争对象锁并执行。
网友评论