国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 中 ThreadLocal使用示例

2019-10-22 18:28:35
字體:
來源:轉載
供稿:網友

Android 中 ThreadLocal使用示例

概要:

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之間不受影響.  

示例代碼:

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<String> mThreadLocal=new ThreadLocal<String>();   @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如下:

<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> 

 如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 晋中市| 宿迁市| 中方县| 丹寨县| 红原县| 安阳县| 宁都县| 彩票| 鄄城县| 伊宁市| 通榆县| 长泰县| 遂溪县| 万山特区| 陆丰市| 房产| 宝清县| 龙山县| 莱芜市| 东方市| 红原县| 武城县| 土默特右旗| 剑河县| 浙江省| 油尖旺区| 广州市| 通州市| 葫芦岛市| 西丰县| 文昌市| 榆林市| 扬州市| 天峨县| 彰化县| 新闻| 万盛区| 岳普湖县| 石嘴山市| 长垣县| 黑山县|