什么是ThreadLocal?如何正确使用ThreadLocal?

您所在的位置:网站首页 threadlocal例子 什么是ThreadLocal?如何正确使用ThreadLocal?

什么是ThreadLocal?如何正确使用ThreadLocal?

2024-01-20 01:06| 来源: 网络整理| 查看: 265

ThreadLocal线程本地存储

多个线程同时读写同一个共享变量会造成并发问题,一种解决方案就是避免变量共享。我们可以使用线程封闭技术,即使用局部变量,每个线程都有各自的调用栈,局部变量就存在栈帧中,不会与其他线程共享。我们还可以使用线程本地存储ThreadLocal。

如何使用 ThreadLocal

下面这段代码会为每个线程分配一个唯一的线程Id,同一个线程每次调用 get() 获得的 Id 是一样的,不同的线程调用 get() 获得的 Id 是不一样的。

static class ThreadId { static final AtomicLong nextId = new AtomicLong(0); //定义ThreadLocal变量 static final ThreadLocal tl= ThreadLocal.withInitial(()->nextId.getAndIncrement()); //此方法会为每个线程分配一个唯一的Id static long get(){ return tl.get(); } }

ThreadLocal

ThreadLocal 中除了构造方法还有 4 个公共的方法:

get():返回此线程局部变量当前副本中的值

remove():移除此线程局部变量当前副本中的值

set(T value):将线程局部变量当前副本中的值设置为指定值

withInitial(Supplier



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3