上午看到一个SUN公司的面试题 提到 wait()和sleep()方法的区别 就知道都要抛异常 对于具体的区别没有深思考 下午看了会儿书 总结了几个
wait()和sleep()的区别
区别一:sleep是Thread类的方法,是线程用来控制自身进程的执行,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟一样。
wait是Object类的方法,用来线程间的通信,这个方法会使当前拥有该对象锁的进程等待知道其他线程调用notify方法时再醒来,不过你也可以给他指定一个时间,自动醒来。这个方法主要是用走不同线程之间的调度的。
区别二:、
sleep()方法不会释放锁 因为它本身不涉及到锁 而wait()方法会释放当前进程的锁,线程间的通信由对象控制,而对象就是通过调用自身的wait()方法来控制的
区别三:使用范围
wait()方法控制线程 用于同步语句块中,这样才有意义
|