最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 中 ThreadLocal使用示例

 更新時(shí)間:2017年09月04日 10:28:10   作者:lfdfhl  
這篇文章主要介紹了Android 中 ThreadLocal使用示例的相關(guān)資料,這里提供示例代碼幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下

Android 中 ThreadLocal使用示例

概要:

Demo描述: 

 ThreadLocal使用示例.  

關(guān)于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.對于同一個(gè)變量(即ThreadLocal中保存的變量)對于不同的線程其值是不同的.   

   2 所有線程共享一個(gè)ThreadLocal對象,但是訪問ThreadLocal對象中的變量時(shí)得到不同的值   

   3 某個(gè)線程修改了ThreadLocal對象中的變量值時(shí)不會影響到其他線程. 

舉個(gè)例子: 

   1 主線程中建立一個(gè)ThreadLocal對象(mThreadLocal) 
   2 在主線程中調(diào)用mThreadLocal的set()方法向mThreadLocal中保存一個(gè)字符串變量 
   3 在兩個(gè)子線程中調(diào)用mThreadLocal的set()方法向mThreadLocal中保存一個(gè)字符串變量 
   4 在主線程中調(diào)用mThreadLocal的get()方法獲取到mThreadLocal中為主線程保存字符串變量,發(fā)現(xiàn)其值未變.   

  ThreadLocal的使用在Looper類中得到很好的體現(xiàn).保證了每個(gè)線程和一個(gè)Looper一一對應(yīng),并且每個(gè)Looper之間不受影響.  

示例代碼:

MainActivity如下:

package cc.cv; 
 
import android.os.Bundle; 
import android.app.Activity; 
/** 
 * Demo描述: 
 * ThreadLocal使用示例. 
 * 關(guān)于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 對于同一個(gè)變量(即ThreadLocal中保存的變量)對于不同的線程其值是不同的. 
 * 2 所有線程共享一個(gè)ThreadLocal對象,但是訪問ThreadLocal對象中的變量時(shí)得到不同的值 
 * 3 某個(gè)線程修改了ThreadLocal對象中的變量值時(shí)不會影響到其他線程. 
 * 
 * 
 * 舉個(gè)例子: 
 * 1 主線程中建立一個(gè)ThreadLocal對象(mThreadLocal) 
 * 2 在主線程中調(diào)用mThreadLocal的set()方法向mThreadLocal中保存一個(gè)字符串變量 
 * 3 在兩個(gè)子線程中調(diào)用mThreadLocal的set()方法向mThreadLocal中保存一個(gè)字符串變量 
 * 4 在主線程中調(diào)用mThreadLocal的get()方法獲取到mThreadLocal中為主線程保存字符串變量,發(fā)現(xiàn)其值未變. 
 * 
 * 
 * ThreadLocal的使用在Looper類中得到很好的體現(xiàn).保證了每個(gè)線程和一個(gè)Looper一一對應(yīng),并且每個(gè)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(){ 
    //在主線程中調(diào)用ThreadLocal的set()方法保存一個(gè)變量 
    mThreadLocal.set("haha"); 
    System.out.println("ThreadLocal保存的主線的變量值:"+mThreadLocal.get()); 
     
     
    new Thread(){ 
      public void run() { 
        //在第一個(gè)子線程中調(diào)用ThreadLocal的set()方法保存一個(gè)變量 
        mThreadLocal.set("xixi"); 
        System.out.println("ThreadLocal保存的第一個(gè)子線程的變量值:"+mThreadLocal.get()); 
      }; 
    }.start(); 
     
    new Thread(){ 
      public void run() { 
        //在第二個(gè)子線程中調(diào)用ThreadLocal的set()方法保存一個(gè)變量 
        mThreadLocal.set("heihei"); 
        System.out.println("ThreadLocal保存的第二個(gè)子線程的變量值:"+mThreadLocal.get()); 
      }; 
    }.start(); 
     
     
    try { 
      Thread.sleep(1000*2); 
      //驗(yàn)證在第一個(gè)和第二個(gè)子線程對于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> 

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

相關(guān)文章

最新評論

特克斯县| 台湾省| 五家渠市| 探索| 酉阳| 时尚| 商水县| 阿勒泰市| 西藏| 彭山县| 湖南省| 尚志市| 隆化县| 陕西省| 陈巴尔虎旗| 许昌市| 谷城县| 馆陶县| 遵义县| 大宁县| 平江县| 顺昌县| 基隆市| 宁都县| 洛川县| 陆川县| 高平市| 慈利县| 长阳| 来安县| 达州市| 北票市| 麻城市| 应用必备| 理塘县| 馆陶县| 舞钢市| 靖西县| 米易县| 宜君县| 札达县|