线程间的通信注意的问题
- 1.在同步代码块中,用哪个对象锁就用哪个对象调用wait方法。
- 2.为什么wait方法和notify方法定义在Object这类中?
因为锁对象可以是任意对象,那么任意对象对应的类都是Object的子类,也就是Object是所有的类的基类,所以将方法定义在Object这个类中就会让任意对象对其进行调用。 - 3.sleep方法和wait方法的区别?
a.sleep方法在同步函数或同步代码块中,不释放锁(睡着了也抱着锁睡)。
wait方法在同步函数或同步代码块中,释放锁。
b.sleep方法必须传入参数,参数就是时间,时间到了自动醒来。
wait方法可以传入参数也可以不传入参数。
如果给wait方法传入时间参数,用法与sleep相似,时间到了开始等待。不传入参数就是直接等待(通常用的都是没有参数的wait方法)。