java多线程编程基础5-线程其间的通信

java多线程编程基础5--线程之间的通信

java多线程中的通信,不一定是数据交换,我们可以理解为多线程之间的互相影响吧,甚至可以包括到线程使用同一个资源。

这是我理解的。

一般基础点的线程之间的通信是包括了几个方法;

1.wait()

2.notify()

3.notiryAll()

还有关键词,synchrobnnized这个关键词。

 

前面有一篇,我记得第一次用上面的几个方法时候,老是报告错误。后来才发现有一个准则是要去记住的!

 

一定要在synchronzed中,包含了临界资源或者是共享资源的方法中用notify和wait方法才是有效的,否则是要错误的

 

wait()和notify()方法都是定义在object类中的,而且是final的,因此会被所有的java类锁继承的并且无法重写的。这两个方法要求在调用时应该已经获得了对象的锁 ,因此对于这两个方法的调用需要放在synchronized方法或者是方法块中的。


这样的话,如果是wait()的话,那么会释放掉对象的锁,所有不会影响到同一个对象的notify取得对象