3月 052020
一、ThreadLocal的作用
ThreadLocal也是用作保证线程安全的一种方式,与平常我们所说的线程安全的方式不同,ThreadLocal是对每个线程都保存一份数据来保证多个线程不会同时使用这个数据。
也许你会说,那我在线程里定义一个这样的数据变量不就可以了?如果你只是定义一个线程类,而运行该线程类的多个实例,当然是可以的。
ThreadLocal是可以用在一个程序中的所有线程中,比如主线程和子线程同时使用这个变量(这听起来有点像单例的场景)。
在Android中比较典型的应用就是Looper了,看Looper池的定义
1 2 |
// sThreadLocal.get() will return null unless you've called prepare(). static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>(); |
看ThreadLocal<Looper>是定义成了静态变量了
二、ThreadLocal的方法
ThreadLocal支持泛型,一共有如下三个方法
- set
- get
- remove
根据函数的名字我们很容易知道他们的作用,这里就不再介绍了
三、其他高级用法
可以和软引用配合使用,以节省内存的使用
Sorry, the comment form is closed at this time.