共同点:wait(),wait(long),sleep(long)都是使当前线程失去对CPU的使用权,进入阻塞队列。
不同点:
方法归属不同:
wait(),wait(long) 是属于Object对象的成员方法,每个对象都有
sleep(long)是属于thread类的静态方法
醒来的时机不同
1.wait(long),sleep(long)都是等待相应毫秒后醒来
2.wait(),wait(long)可以notify被唤醒,wait()如果没有唤醒,会一直等下去
3.他们都可以被打断唤醒
4锁的特性不同
wait方法调用先获取wait对象锁才可以使用,sleep没有限制
wait方法执行后会释放锁,允许其他线程获取锁
sleep方法在synchronized代码中执行不会释放锁