Posted on 2015-07-04
JAVA的进程同步是通过synchronized()来实现的,上述三个方法都需要和synchronized(obj)一起使用.
在JAVA中的Object类型中,都是带有一个内存锁的,在有线程获取该内存锁后,
其它线程无法访问该内存,从而实现JAVA中简单的同步、互斥操作.
通俗点来讲就是这条线程开始等待obj了,当obj唤醒了以后这条线程就有机会获取到它的控制权了.
notify(通知),正如它的翻译,调用这个方法的线程通知其他线程这个对象可以用啦,
然后正在等待的线程中会有某一条被唤醒并获取到obj的控制权,但具体哪条被唤醒要看jvm的调度,具有不确定性.
#notifyAll
调用这个方法的线程通知所有正在等待的线程,被唤醒的线程重新竞争获取到obj的控制权,这个方法比notify用得更多,
因为我们不知道具体要唤醒哪条线程,还不如全部唤醒让他们重新去抢控制权.
一个比较详细的例子:http://blog.csdn.net/zyplus/article/details/6672775