package com.work.wor01;
/**
* 需求:有两个储户同时到一个银行去存钱,每人存3次,每次存100元。
* 要求打印出银行每次金额的变化情况(假设银行没钱)
*
* 分析:得出有两个类:银行和储户
* 这是一个多线程的问题,如何分析他的线程安全问题呢?
* 1.通过线程的任务代码分析。
* 2.有没有共享数据,有没有多条语句在操作共享数据。
* */
class Bank{
private int sum = 0;
public void add(int num){
sum = sum + num;
System.out.println(Thread.currentThread().getName()+"...sum="+sum);
}
}
class Customer implements Runnable{
Bank b = new Bank();
Object obj = new Object();
@Override
public void run() {
synchronized (obj) {
for(int i = 0;i<3;i++){
b.add(100);
}
}
}
}
public class BankThread {
public static void main(String[] args) {
Customer c = new Customer();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
多线程——用同步代码块解决经典储户银行存钱问题
最新推荐文章于 2022-10-07 17:02:13 发布