ThreadLocal使用示例
来源:互联网 发布:阿里云专线是啥意思 编辑:程序博客网 时间:2024/06/05 14:13
MainActivity如下:
main.xml如下:
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<String> mThreadLocal=new ThreadLocal<String>();@Overrideprotected 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如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /></RelativeLayout>
0 0
- ThreadLocal使用示例
- ThreadLocal使用示例
- ThreadLocal的使用与代码示例(译)
- Java中的ThreadLocal示例.
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal 使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- ThreadLocal使用
- 第十二周项目包含递归函数的程序1
- 第三方微博项目日志第一天1
- Win8.1 下安装 eVC++ 4.0
- [学习笔记] 用TexturePacker建立动画Animation
- dota 视频想到的 —— (小黑支配弓箭兵自杀)
- ThreadLocal使用示例
- 详解Linux2.6内核中基于platform机制的驱动模型
- C语言建立单链表出错误及其分析
- 起点
- Java 图片处理 给原有图片填充颜色满足需求大小 背景透明
- 第十二周项目3-用递归方法求解1
- 《锦瑟》古风•和风原创音乐专辑
- gcc宏定义可变参数列表(__VA_ARGS__)
- Can't connect to MySQL server on '203.195.193.113' (110)