2022-06-07银行账户存钱例题

银行有一个账户

有两个储户分别向同一个账户存3000元,每次存1000,存3次。每次存完打印账户余额。

分析:

1.是否是多线程问题? 是,两个储户线程

2.是否有共享数据?有,账户(或账户余额)、

3.是否有线程安全问题?有

4.需要考虑如何解决线程安全问题?同步机制:有三种方式


package atguigu.exer;

/**

* @author zzw

* @create 2022-06-07 9:51

*/

class Customer1 implements Runnable {

private double balance;

public Customer1(double balance) {

this.balance =balance;

}

// 存钱

  public synchronized void deposit(double amt) {

if (amt >0) {

balance +=amt;

try {

Thread.sleep(100);

}catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName() +":当前的余额为:" +balance);

}

}

@Override

  public void run() {

for (int i =0; i <5; i++) {

deposit(1000);

}

}

}

public class AccountTest1 {

public static void main(String[]args) {

Customer1 c1 =new Customer1(0);

Thread t1 =new Thread(c1);

Thread t2 =new Thread(c1);

Thread t3 =new Thread(c1);

t1.setName("甲");

t2.setName("乙");

t3.setName("丙");

t1.start();

t2.start();

t3.start();

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、 java基础 1. java多线程基础 1) 多线程的创建方式 1.多线程创建方式1 packagecom....
    酸脱羟基醇脱氢生成脂肪阅读 238评论 0 0
  • 废话不多说,自己进入今天的主题 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:...
    传奇内服号阅读 2,414评论 1 31
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 5,164评论 0 23
  • 进程:当一个程序进入内存运行,即变成一个进程。 (单核计算机在同一个时间点上,游戏进程和音乐进程是同时在运行吗?不...
    yangliangliang阅读 376评论 0 0
  • 1. 线程的基本概念 1.1 进程 任何的软件存储在磁盘中,运行软件的时候,OS使用IO技术,将磁盘中的软件的文件...
    Zzzzjq阅读 343评论 0 0