转载 JAVA线程中,哪里有synchronized,那里就要有notifyAll()


======================================================
注:本文源代码点此下载
======================================================

java线程中,哪里有synchronized,那里就要有notifyall(),写多线程一定要记得这个原则,否则是哪里出了问题,你根本就找不出来,我可是吃了够大的苦,因为我模拟的线程很多,都是1000一批,大部份时候都是不能够全部执行成功,一步步的找呀,真的很痛苦。同步一般用的比较多的用块同步、方法同步,也有些需要对类同步,对类同步则类中的所有方法都是同步的,如典型的hashtable,就是线程安全的,也即同步的。以下摘一些写法:

块同步:

view plain

synchronized(this){//dosomething//下面这一步千万别忘了,要告诉别的线程你ok了,该别人了notifyall();}//另注:千万不要将notifyall()写在同步块的外面,否则自己连怎么死的//都不知道,不要看我,我就是这么被折磨过来的,谁叫自己不争气呢,要//写成下面这样//notifyall();

方法同步:

view plain

private synchronized void adddealok(){//dosomethingnotifyall();}//同理,不要把notifyall()写到调用该同步方法的方法里面,一定要写在//被调用的同步方法里面

另外,一个同步方法调用另外一个同步方法的时候,最好两个方法中都把notifyall()给加上,这样只有好处,不会有坏处


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值