notify(),notifyAll()非常有用,在一个synchronized(lockObj)块中当调用lockObj.wait()时,线程就已经将锁放开来了,这时当另外一个线程调用lockObj.notify()时,等待的线程就会继续执行下去了。这是一种非常高效的线程同步机制。如果没有他,用sleep()来同步的话就太浪费时间了。
一个简单的例子:
thread1 receive data
thread2 pase received data
lockObj是buf
当buf中没有数据时,thread2中调用buf.wait释放锁,让thread1有机会执行。
当thread1收到数据时,调用buf.notify()通知thread1去处理收到的数据。