sleep和wait的区别,面试中经常碰到的问题,锁一我们必须得记得一清二楚:
相同点:可以让线程处于冻结状态(放弃cpu执行权)
不同点:1,sleep必须指定时间,wait可以指定之间,也可以不指定时间(易错点);
2,sleep时间到,线程处于临时阻塞和运行,wait如果没有指定时间,必须用notify或notifyAll唤醒;
3,sleep不一定非要定义在同步中,wait必须定义在同步中;
4,若都定义在了同步中,线程执行到sleep,不会释放锁,线程执行到wait,会释放锁(重点)。
上述第四点是最重要的一点,也是最难记的一点,也是最容易记混的一点。给大家说说记住的技巧:
java 中的方法和变量的命名都是有一定规则的sleep顾名思义只是睡会儿,我的东西给你了,醒来了怎么办。
wait是等待的意思就是说,你等等该我了,但是你若拿着这个锁,该我了,我又不能执行,能算该我吗,所以该我了,你把锁也得给我。
原文地址:http://blog.csdn.net/caobaoyindedipan/article/details/44995901