一个应该出错,但却没有出错的程序,大家来看一下..........

linkboy2004 linkboy2004 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个老师用来说明Synchronized作用的程序:十个人向一个帐户存700万次钱,最后帐户应该为多少?
因为没有Synchronized,所以我觉得应该是大于7000万的,但是我在我的电脑上运行却是正好...
奇怪......如果要加Synchronized,加在哪里呢?


public class SynchronizedDemo{
public static void main(String arg[]){
MyThread employee[]=new MyThread[10];
BankAccount CorpAccount=new BankAccount(0L);
for(int i=0;i<10;i++){
employee[i]=new MyThread(CorpAccount);
}
for(int i=0;i<10;i++){employee[i].start();}
waitloop:
while(true){
for(int i=0;i<10;i++)
if(employee[i].isAlive()) continue waitloop;
break;
}
System.out.println(CorpAccount.publicAccount);
}
}
class MyThread extends Thread{
BankAccount LocalAccount;
public MyThread(BankAccount b){LocalAccount=b;}
public void run(){
for(int i=0;i<7000000;i++){
LocalAccount.publicAccount+=10;
}
}
}
class BankAccount{
long publicAccount=0;
public BankAccount(long value){publicAccount=value;}
}
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
linkboy2004
Java EE 67,535 成员 225,843 内容