非同步实例
对象:银行、取款机、用户
业务:模拟用户通过取款机取款
Bank
class Bank {
int getMoney() {
return money;
}
static int money = 100000;
/**取款**/
int takeOut(int takeMoney) {
if (money > takeMoney) {
return money -= takeMoney;
}
return 0;
}
}
Person
public class Person extends Thread {
@Override
public void run() {
super.run();
Bank bank = new Bank();
while (bank.getMoney() > 100) {
System.out.println("取款前" + bank.getMoney());
if (bank.getMoney() > 100) {
System.out.println("取款100,剩余" + bank.takeOut(100));
} else {
try {
throw new Exception("余额不足,剩余" + bank.getMoney());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
效果
取款机
public class Counter {
public static void main(String[] args) {
Person person = new Person();
Person person1 = new Person();
person.start();
person1.start();
}
}
同步实例
对象:银行、取款机、用户
业务:模拟用户通过取款机取款
Bank
class Bank {
int getMoney() {
return money;
}
static int money = 1000;
//取款
int takeOut(int takeMoney) {
if (money > takeMoney) {
return money -= takeMoney;
}
return 0;
}
}
Person
public class Person extends Thread {
@Override
public void run() {
super.run();
Bank bank = new Bank();
while (bank.getMoney() > 100) {
System.out.println("取款前" + bank.getMoney());
synchronized (Person.class) {
if (bank.takeOut(100) != 0) {
System.out.println("取款100,剩余" + bank.takeOut(100));
} else {
try {
throw new Exception("余额不足,剩余" + bank.getMoney());
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
取款机
public class Counter {
public static void main(String[] args) {
Person person = new Person();
Person person1 = new Person();
person.start();
person1.start();
}
}