当前位置: 代码迷 >> 多核软件开发 >> 线程同步中的wait()、notify()用到的对象到底是如何工作的
  详细解决方案

线程同步中的wait()、notify()用到的对象到底是如何工作的

热度:9057   发布时间:2013-02-26 00:00:00.0
线程同步中的wait()、notify()用到的对象到底是怎么工作的? - 移动平台 / Android
这里看了一个号称《最简实例说明wait、notify、notifyAll的使用方法》,依法炮制了在自己程序里却不能用,还是报IllegalMonitorStateException错。

http://longdick.iteye.com/blog/453615

问题主要出在同步时锁定的对象,按文指点,使用了数组也不行,改成this就可以了。

至此,还是没弄明白这个“锁定对象”是怎么回事儿?网上几乎都是说“取得对象控制权”,一样不知所云。或许他们自己心里明白吧,但这种说法令人摸不着头脑。请明白人讲解一下。

------解决方案--------------------------------------------------------
锁定对象就是此对象被我独占了,其他线程不能访问此对象,只有等到我释放了对象锁之后,其他线程才能访问此对象。
好比,你上了公交车,坐到一个座位上,这个座位就被你锁定(取得控制权)了,只有你站起来(释放锁)后,别人才可以继续坐这个座位。
------解决方案--------------------------------------------------------
以this做为锁定对象,意在同步操作是针对当前类所在上下文。
------解决方案--------------------------------------------------------
不一定要锁this,任何对象都可以,但是锁this比较好一点,你也可以单独创建一个锁对象专门做这个事:
private Object mLock = new Object();
  相关解决方案