Java中的ThreadLocal的使用与原理

Threadlocal

本文主要介绍ThreadLocal的基本使用与底层原理,欢迎大家相互学习与指正。

1.ThreadLocal定义

ThreadLocal是线程的局部变量,即使用ThreadLocal可以使用变量成为当前线程所独有的,对其他线程隔离。

ThreadLocal提供线程本地的实例,它与普通线程的区别:每个使用该变量的线程都会初始化一个完成独立的实例副本。

ThreadLocal变量通常用private static修饰,适用于变量在线程间隔离而在方法与类间共享的情况。

2.ThreadLocal与synchronized的区别:

都可以解决多线程并发访问的安全问题。

sy用于线程间数据的共享,th用于线程间数据的隔离。

sy利用锁机制,使变量或代码块某一时刻只能被一个线程访问,th为线程都提供了变量的副本。

3.ThreadLocal底层

ThreadLocal是一个对象,数据真正是存放在ThreadLocal内部的类型为ThreadLocalMap的一个map上,由Thread管理(Thread.threadlocals)

Java中的ThreadLocal的使用与原理_第1张图片

ThreadLocalMap将数据以Entry的键值对的形式保存,key是ThreadLocalÿ

你可能感兴趣的:(多线程,java)