您的位置:首页 > 其它

ThreadLocal使用及源码分析

2018-02-10 21:26 447 查看
版权声明:本文为博主原创文章,欢迎大家转载!

转载请标明出处: 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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: