有存入和支出两个线程,对共同账户操作
package threads;
public class Money implements Runnable{
Thread in=new Thread(this,"会计");
Thread out=new Thread(this,"出纳");
private int money=200;
public void run(){
int i=0,o=0;
int m1;
while(i<3&&o<3){
m1=money;
io();
if(m1>money)
o++;
else
i++;
}
}
public synchronized void io(){
try{
Thread.sleep(1000);
}catch(Exception e){
}
if(Thread.currentThread()==in){
money+=100;
System.out.println("存入100元,余额:"+money);
}
else{
money-=50;
System.out.println("支出50元,余额:"+money);
}
}
}
存入100元,余额:300
存入100元,余额:400
存入100元,余额:500
支出50元,余额:450
支出50元,余额:400
支出50元,余额:350
支出50元,余额:300
为什么线程没有并发,而且支出发生了四次?