线程安全
线程安全问题是什么,发生的原因
多个线程同时操作一个共享资源的时候可能会出现安全问题,称为线程安全问题
线程安全问题出现的原因
- 存在多线程并发
- 同时访问共享资源
- 存在修改共享资源
线程安全问题案例模拟
需求:
小明和小红有一个共同的账户,余额是10000,模拟两人同时去取钱10000
ThreadSafeDemo1类
public class ThreadSafeDemo1 {
public static void main(String[] args) {
Account act = new Account("白金卡",001,10000);
//创建小红 和 小明 两个线程
Thread t1 = new Thread1(act);
t1.setName("小红");
Thread t2 = new Thread1(act);
t2.setName("小明");
//启动线程 开始去取钱
t1.start();
t2.start();
}
}
账户类Account
package com.itheima.ThreadSafe;
public class Account {
private String name;
private int id;
private int money;
public Account() {
}
public Account(String name, int id,int money) {
this.name = name;
this.id = id;
this.money = money;
}
public String getName() {
return name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Account{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
//取钱方法
public void withdraw(int takemoney){
String name = Thread.currentThread().getName();
//显示余额