关于线程的问题
package 线程同步;
public class FetchMoney
{
	public static void main(String[] args)
	{
		Bank bank = new Bank();//模拟一个账户
		MoneyThread money1 = new MoneyThread(bank);//取款机取款
		MoneyThread money2 = new MoneyThread(bank);//银行取款
		money1.start();
		money2.start();
	}
}
class Bank
{
	private int money = 1000;
	// private static int money=100;
	public int getMoney(int number)
	{
		if (number < 0)
		{
			return -1;
		}
		else if (number > money)
		{
			return -2;
		}
		else if (money < 0)
		{
			return -3;
		}
		else
		{
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			money -= number;
			System.out.println("LEFT:" + money);
			return number;
		}
	}
}
class MoneyThread extends Thread
{
	private Bank bank;
	public MoneyThread(Bank bank)
	{
		this.bank = bank;
	}
	@Override
	public void run()
	{
		System.out.println(bank.getMoney(800));
	}
}
最近在看张龙老师的视频的线程这块
因为这个运行结果有很多种,
运行出来的下面这2种结果百思不得其解
怎么可能最后剩下的钱为200,
怎么想都是-600
控制台第1种打印结果:
LEFT:200
LEFT:200
800
800
控制台第2种打印结果:
LEFT:200
800
LEFT:200
800
求大能解释
------解决方案--------------------
线程交叉~