package cn.yb.thread;
public class ThreadLocalDemo {
static class Bank {
private ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() {
protected Integer initialValue() {
System.out.println("initialValue---------");
return 0;
}
};
public Integer get() {
return threadLocal.get();
}
public void setInteger(Integer money) {
threadLocal.set(money + threadLocal.get());
}
}
static class Transfer implements Runnable {
private Bank bank;
public Transfer(Bank bank) {
System.out.println("Transfer---------");
this.bank = bank;
}
public void run() {
for(int i=0;i<10;i++) {
bank.setInteger(10);
System.out.println(Thread.currentThread().getName()+"账户余额:"+bank.get());
}
}
}
public static void main(String[] args) {
Bank bank = new Bank();
Transfer transfer = new Transfer(bank);
Thread thread1 = new Thread(transfer,"客户1");
Thread thread2 = new Thread(transfer,"客户2");
thread1.start();
thread2.start();
}
}