那个银行存款取款的那个很经典的银行存款取款的例子package com;public class TestThreadBank { private String name; //name
private double balance; //balance
public TestThreadBank(String name){
this.name=name;
this.balance=0;
}
public String getName(){
return name;
}
public double balance(){

return balance;
}

public void put(double value)  //存款操作
{
if(value>0){
this.balance+=value;
}
}
public double get(double value){//取款操作
if(value>0){
if(value<this.balance)
this.balance-=value;
else{
value=this.balance;
this.balance=0;
}
return value;

}
return 0;
}
public static void main(String args[]){//主方法

TestThreadBank bank=new TestThreadBank("wang");
//TestThreadBank bank2=new TestThreadBank("xiang");
(new Save(bank, 100)).start();
(new Save(bank,  200)).start();
(new Fetch(bank, 300)).start();

}
}class Save extends Thread{
private TestThreadBank countBank;
private double value;
public Save(TestThreadBank A,double value)//存款类
{
this.countBank=A;
this.value=value;

}
public void run(){
synchronized (this.countBank) {
double howmach=this.countBank.balance();
this.countBank.put(value);
try{
sleep(1);
}catch (InterruptedException e) {
// TODO: handle exception
}
System.out.println(this.countBank.getName()+"账户:现有"+howmach+"存入"+this.value+"余额"+this.countBank.balance());

}
}
}
class Fetch extends Thread{
private TestThreadBank countBank;
private double value;
public Fetch(TestThreadBank A1,double value){
this.countBank=A1;
this.value=value;

}
public void run(){
synchronized (this.countBank) {
double howmatch=this.countBank.balance();
try {
sleep(1);
} catch (InterruptedException e) {
// TODO: handle exception
}
System.out.println(this.countBank.getName()+"账户:现有"+howmatch+"取走"+this.countBank.get(value)+"余额"+this.countBank.balance());

}
}
}
在这个里面书上介绍说只要给临界资源加上同步锁,那么就能实现先存100  再存200  再取300 的效果 
但是 但是我PC上就是不按照顺序执行  或者说我创建的三个线程不是按照创建的时候来执行的  
很困惑  希望各位大牛能给我解释一下