ThreadLocal用法心得


ThreadLocal

  • ThreadLocal类允许我们创建只能被同一个线程读写的变量,本质是一个Hash表,keyThread自身.
  • 主要方法: set() / get() / remove()

创建

// 不带初始值
ThreadLocal<String> str = new ThreadLocal<>();

// 带初始值
static ThreadLocal<String> str = new ThreadLocal<String>() {
    @Override
    protected String initialValue() {
        return "a";
    }
};

// java8便捷写法
ThreadLocal<String> str = ThreadLocal.withInitial(() -> "a");

使用

public static void main(String[] args) {
    new Thread(() -> {
//            str.set("aa");
        System.out.println(str.get()); // 初始化a
        str.remove(); // 用完主动释放,防止内存泄漏
    }).start();

    new Thread(() -> {
        str.set("bb");  //赋值
        System.out.println(str.get()); // 输出bb
        str.remove();   // 用完主动释放,防止内存泄漏
    }).start();
}

文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
docker网络模式 docker网络模式
网络模式 Docker网络模式 配置 说明 host –net=host 容器和宿主机共享Network namespace。 container –net=container:NAME 容器和另外一个容器共享Network
2020-08-18
下一篇 
nginx【单机版部署】 nginx【单机版部署】
部署# ccentos 7 yum install nginx 启动systemctl start/stop/restart nginx # 通过status查看nginx.conf配置文件位置 systemctl status ngin
2020-08-11
  目录