======================================================
注:本文源代码点此下载
======================================================
java线程中,哪里有synchronized,那里就要有notifyall(),写多线程一定要记得这个原则,否则是哪里出了问题,你根本就找不出来,我可是吃了够大的苦,因为我模拟的线程很多,都是1000一批,大部份时候都是不能够全部执行成功,一步步的找呀,真的很痛苦。同步一般用的比较多的用块同步、方法同步,也有些需要对类同步,对类同步则类中的所有方法都是同步的,如典型的hashtable,就是线程安全的,也即同步的。以下摘一些写法:
块同步:
synchronized(this){//dosomething//下面这一步千万别忘了,要告诉别的线程你ok了,该别人了notifyall();}//另注:千万不要将notifyall()写在同步块的外面,否则自己连怎么死的//都不知道,不要看我,我就是这么被折磨过来的,谁叫自己不争气呢,要//写成下面这样//notifyall();
方法同步:
private synchronized void adddealok(){//dosomethingnotifyall();}//同理,不要把notifyall()写到调用该同步方法的方法里面,一定要写在//被调用的同步方法里面
另外,一个同步方法调用另外一个同步方法的时候,最好两个方法中都把notifyall()给加上,这样只有好处,不会有坏处
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/