Threadlocal概念复述

1.Threadlocal为每个线程都创建了一个局部变量副本,线程和线程之间的局部变量相互隔离,

该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 getset 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。


ThreadLocal在保持事务的特性上有独特的优势,例如多个线程链接数据库去操作数据库链接的开启和关闭,线程之间的开启和关闭有可能会相互干扰,此时可以

将conn放入ThreadLocal<Connection> threadlocal中,从而实现线程之间局部变量的有效隔离;

2.示例1:

 public class UniqueThreadIdGenerator {

     private static final AtomicInteger uniqueId = new AtomicInteger(0);

     private static final ThreadLocal < Integer > uniqueNum = 
         new ThreadLocal < Integer > () {
             @Override protected Integer initialValue() {
                 return uniqueId.getAndIncrement();
         }
     };
 
     public static int getCurrentThreadId() {
         return uniqueId.get();
     }
 } // UniqueThreadIdGenerator

3.示例2:

public class SequenceImpl implements Sequence{
    private static int number=0;

    @Override
    public  int getNumber() {
        numberContainer.set(numberContainer.get()+1);

        return numberContainer.get();
    }



    private static ThreadLocal<Integer> numberContainer=new ThreadLocal<Integer>(){
        @Override
        protected Integer initialValue() {
            return 0;
        }
    };


    public static void main(String[] args) {
        Sequence sequencea = new SequenceImpl();

        ClientThread thread1 = new ClientThread(sequencea);
        ClientThread thread2 = new ClientThread(sequencea);
        ClientThread thread3 = new ClientThread(sequencea);
        thread1.start();
        thread2.start();
        thread3.start();


    }
}
 


4.方法摘要

方法摘要
 Tget()
          返回此线程局部变量的当前线程副本中的值。
protected  TinitialValue()
          返回此线程局部变量的当前线程的“初始值”。
 voidremove()
          移除此线程局部变量当前线程的值。
 voidset(T value)
          将此线程局部变量的当前线程副本中的值设置为指定值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值