ThreadLocal使用及源码分析
2018-02-10 21:26
447 查看
版权声明:本文为博主原创文章,欢迎大家转载!
转载请标明出处: http://blog.csdn.net/guiying712/article/details/79250212 ,本文出自:【张华洋的博客】
ThreadLocal 提供了线程本地变量。这些变量不同于普通变量,每个线程都可以通过 ThreadLocal 的 get 或 set 方法访问这个线程自己的变量,独立初始化变量的副本。ThreadLocal 实例通常在其他类中是 private static 域,它希望将自己的状态与一个线程关联起来。
转载请标明出处: http://blog.csdn.net/guiying712/article/details/79250212 ,本文出自:【张华洋的博客】
ThreadLocal 提供了线程本地变量。这些变量不同于普通变量,每个线程都可以通过 ThreadLocal 的 get 或 set 方法访问这个线程自己的变量,独立初始化变量的副本。ThreadLocal 实例通常在其他类中是 private static 域,它希望将自己的状态与一个线程关联起来。
验证线程变量的隔离性
我们先写一段测试代码:public class ThreadTestActivity extends AppCompatActivity { private static final String TAG = "ThreadTestActivity "; private ThreadLocal<String> mStringThreadLocal = new ThreadLocal<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_acc); mStringThreadLocal.set("[Thread#main]"); Log.e(TAG, "[Thread#main] ThreadLocal String =" + mStringThreadLocal.get()); new Thread("Thread#1") { @Override public void run() { mStringThreadLocal.set("[Thread#1]"); Log.d(TAG, "[Thread#1] ThreadLocal String =" + mStringThreadLocal.get()); } }.start(); new Thread("Thread#2") { @Override public void run() { Log.d(TAG, "[Thread#1] ThreadLocal String =" + mStringThreadLocal.get()); } }.start(); } }
相关文章推荐
- 分析balde源码,查看Web工程处理Ioc注入的背后的过程,ThreadLocal 使用保存线程所有的request and respond,
- ThreadLocal源码分析与使用场景
- Spring源码分析【6】-ThreadLocal的使用和源码分析
- ThreadLocal使用和源码分析
- lesson1:threadlocal的使用demo及源码分析
- Java并发编程系列(六)---- ThreadLocal使用及源码分析
- ThreadLocal基本使用和源码分析
- 第二人生的源码分析(五十八)使用FreeType字体
- 第二人生的源码分析(六十六)使用Expat XML解析器的例子
- 蔡军生先生第二人生的源码分析(四十一)使用Apache运行库线程
- 第二人生的源码分析(六十七)LLXMLNode使用Expat库打开文件
- 第二人生的源码分析(六十九)使用LLXmlTree类来分析XML配置文件
- 第二人生的源码分析(六十六)使用Expat XML解析器的例子
- 蔡军生先生第二人生的源码分析(六十六)使用Expat XML解析器的例子
- 第二人生的源码分析(六十八)LLXMLNode使用Expat库分析XML文件
- 第一个使用socket的源码分析
- 蔡军生先生第二人生的源码分析(五十八)使用FreeType字体
- 第二人生的源码分析(五十八)使用FreeType字体
- 第二人生的源码分析(四十一)使用Apache运行库线程
- 第二人生的源码分析(六十八)LLXMLNode使用Expat库分析XML文件