java多线程(14)ThreadLocal类

  1. ThreadLocal类对象可以为每一个线程都建立一个“副本”,使得好像每一个线程都“拥有了”ThreadLocal类对象一样
  2. 以下为代码示例,具体的讲解穿插在代码中
    class Account2{
        
        private ThreadLocal<String> name = new ThreadLocal<>();
    //    ThreadLocal对象,每个线程都拥有它的一个副本
        
        public Account2(String str){
            this.name.set(str);
            System.out.println("---" + this.name.get());
        }
    
    //    ThreadLocal对象name的get和set方法
        public String  getName() {
            return name.get();
        }
    
        public void setName(String str) {
            this.name.set(str);
        }
    }
    
    
    class MyTest extends Thread{
        private Account2 account2;
        public MyTest(Account2 account2, String name){
            super(name);
            this.account2 = account2;
        }
        public void run(){
            for(int i=0; i<10; i++){
                if(i==6){
                    
    //                在i==6的时候,将name设置为各自线程的线程名,所以在i>=6时name会被替换成
    //                对应的线程名称
                    account2.setName(getName());
                }
            System.out.println(account2.getName() + "账户的i值: " + i);
            }
        }
    }
    
    
    public class ThreadLocalTest {
        public static void main(String args[]){
            Account2 account2 = new Account2("初始名");
            new MyTest(account2, "流程甲").start();
            new MyTest(account2,"流程乙").start();
        }
    }
    

    这是我看李刚编著的《疯狂Java讲义》后总结出来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值