public class Account {
private String name;
private double money;
private byte[] LOCK = new byte[0];
public Account(String name) {
this(name, 0);
}
public Account(String name, double money) {
super();
this.name = name;
this.money = money;
}
public void put(double money){
synchronized(LOCK){
this.money +=money;
}
}
public double get(double money){
synchronized(LOCK){
if(this.money < money){
System.out.println("余额不足!");
return 0;
} else {
this.money -=money;
return money;
}
}
}
public String toString(){
return "[name="+name+",money="+money+"]";
}
}
public class Fetch implements Runnable {
private Account account;
private Random r = new Random();
public Fetch(Account a){
account = a;
}
@Override
public void run() {
if(account != null){
int i = 0;
while(true){
try {
TimeUnit.MILLISECONDS.sleep(r.nextInt(1000));
i = r.nextInt(1000);
System.out.println("Fetch get " + i);
account.get(i);
System.out.println(account);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
public class Save implements Runnable {
private Account account;
private Random r = new Random();
public Save(Account a){
account = a;
}
@Override
public void run() {
if(account != null){
int i = 0;
while(true){
try {
TimeUnit.MILLISECONDS.sleep(r.nextInt(1000));
i = r.nextInt(1000);
System.out.println("Save put " + i);
account.put(i);
System.out.println(account);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
public class Test {
public static void main(String[] args) {
Account a = new Account("1");
new Thread(new Save(a)).start();
new Thread(new Fetch(a)).start();
}
}
追问大哥能不能把JAVA和class文件发我由箱 381932611 谢谢大哥!!