java多线程资源共享问题

有存入和支出两个线程,对共同账户操作

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
为什么线程没有并发,而且支出发生了四次?
查看全部
weixin_45472156
Leonardo||Watch
2020/05/26 18:38
  • java
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复