多线程之---sleep和wait的区别
其实理论上两者没有可比性,sleep和wait是两个不相干的方法,一个用于线程之间的通信,一个是让线程阻塞一段时间,只是他们调用后产生的效果很像,都是让线程停止运行一段时间,但产生这个现象的原理是不一样的。具体的不同如下所示:
1、两个方法所属类不同:sleep是Thread类的方法,而wait是Object类的方法
2、作用不同:sleep是让线程休眠一定时间进入阻塞态(超时等待态),休眠时间到后自动进入就绪态;wait则是将线程进入等待态,等待notify和notifyAll方法的唤醒
3、有无释放锁:wait调用之前必须保证已经请求到锁,调用后会释放掉已获得的所有锁,唤醒后继续重新请求锁;sleep不会释放资源,即:是无视锁的存在,获取到的锁不会释放,也不需要必须申请到锁后才可以调用