读书人

线程同步中的wait()、notify()用到的对

发布时间: 2012-03-22 17:43:57 作者: rapoo

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

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

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

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

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

读书人网 >软件开发

热点推荐