Java多线程程序编写的4条规则:
1)如果两个或者两个以上的线程都修改一个对象,那么把修改的方法定义为被同步的。如果对象更新影响到只读方法,那么只读方法也应该被定义为被同步的。
2)如果一个线程必须等待一个对象状态发生变化,那么它应该在对象内部等待,而不是外部。他可以通过调用一个被同步的方法,并让这个方法wait()。
3)每当一个方法改变某个对象的状态是,它应当调用notifyAll()方法。这个等待队列的线程提供机会来看看执行环境是否已发生变化。
4)记注wait()和notify()/notifyAll()方法属于Object类,而不是Thread类。仔细检查看是否每次调用wait方法,都有相应的notify()或这nitifyAll()方法,且他们作用于相同的对象。