/**
* 模拟多个用户银行转账
*/
public class Test {
static class bank {
ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() {
@Override
protected Integer initialValue() {
return 0;
}
};
public Integer get() {
return threadLocal.get();
}
public void set(Integer money) {
threadLocal.set(threadLocal.get() + money);
}
}
static class change implements Runnable {
bank b;
change(bank b) {
this.b = b;
}
@Override
public void run() {
if("客户1".equals(Thread.currentThread().getName())) {
for (int i = 0; i < 10; i++) {
b.set(10);
System.out.println(Thread.currentThread().getName() + "账户余额" + b.get());
}
}
if("客户2".equals(Thread.currentThread().getName())) {
for (int i = 0; i < 20; i++) {
b.set(10);
System.out.println(Thread.currentThread().getName() + "账户余额" + b.get());
}
}
if("客户3".equals(Thread.currentThread().getName())) {
for (int i = 0; i < 30; i++) {
b.set(10);
System.out.println(Thread.currentThread().getName() + "账户余额" + b.get());
}
}
if("客户4".equals(Thread.currentThread().getName())) {
for (int i = 0; i < 40; i++) {
b.set(10);
System.out.println(Thread.currentThread().getName() + "账户余额" + b.get());
}
}
}
}
public static void main(String[] args) {
bank b = new bank();
change c=new change(b);
Thread T1=new Thread(c,"客户1");
Thread T2=new Thread(c,"客户2");
Thread T3=new Thread(c,"客户3");
T1.start();
T2.start();
T3.start();
}
}
网友评论