ThreadLocal使用示例
发布日期:2021-06-30 11:16:19 浏览次数:3 分类:技术文章

本文共 1985 字,大约阅读时间需要 6 分钟。

MainActivity如下:
package cc.cv;import android.os.Bundle;import android.app.Activity;/** * Demo描述: * ThreadLocal使用示例. * 关于ThreadLocal的官方文档描述 * Implements a thread-local storage, that is, a variable for which each thread has its own value.  * All threads share the same ThreadLocal object, but each sees a different value when accessing it, * and changes made by one thread do not affect the other threads.  * The implementation supports null values. * 该段文字描述了ThreadLocal的用途: * 1 对于同一个变量(即ThreadLocal中保存的变量)对于不同的线程其值是不同的. * 2 所有线程共享一个ThreadLocal对象,但是访问ThreadLocal对象中的变量时得到不同的值 * 3 某个线程修改了ThreadLocal对象中的变量值时不会影响到其他线程. *  *  * 举个例子: * 1 主线程中建立一个ThreadLocal对象(mThreadLocal) * 2 在主线程中调用mThreadLocal的set()方法向mThreadLocal中保存一个字符串变量 * 3 在两个子线程中调用mThreadLocal的set()方法向mThreadLocal中保存一个字符串变量 * 4 在主线程中调用mThreadLocal的get()方法获取到mThreadLocal中为主线程保存字符串变量,发现其值未变. *  *  * ThreadLocal的使用在Looper类中得到很好的体现.保证了每个线程和一个Looper一一对应,并且每个Looper之间不受影响. *  */public class MainActivity extends Activity {    private static ThreadLocal
mThreadLocal=new ThreadLocal
(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); testThreadLocal(); } private void testThreadLocal(){ //在主线程中调用ThreadLocal的set()方法保存一个变量 mThreadLocal.set("haha"); System.out.println("ThreadLocal保存的主线的变量值:"+mThreadLocal.get()); new Thread(){ public void run() { //在第一个子线程中调用ThreadLocal的set()方法保存一个变量 mThreadLocal.set("xixi"); System.out.println("ThreadLocal保存的第一个子线程的变量值:"+mThreadLocal.get()); }; }.start(); new Thread(){ public void run() { //在第二个子线程中调用ThreadLocal的set()方法保存一个变量 mThreadLocal.set("heihei"); System.out.println("ThreadLocal保存的第二个子线程的变量值:"+mThreadLocal.get()); }; }.start(); try { Thread.sleep(1000*2); //验证在第一个和第二个子线程对于ThreadLocal存储的变量值的修改没有影响到ThreadLocal存的主线程变量 System.out.println("ThreadLocal保存的主线的变量值:"+mThreadLocal.get()); } catch (Exception e) { } }}
main.xml如下:

转载地址:https://it9527.blog.csdn.net/article/details/41083091 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:得到所有Activity和Service
下一篇:Android删除文件夹的代码实现

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月21日 00时53分49秒