ThreadLocal簡單使用示例


ThreadLocal為每個線程提供單獨的數據副本,線程間的數據為自身線程所獨有(不存在共享變量問題),直接看代碼

 1 public class ThreadLocalTest {
 2 
 3      private static ThreadLocal<List<String>> threadLocal = new ThreadLocal<>();
 4      
 5     public void setThreadLocal(List<String> value) {
 6 
 7            threadLocal.set(value);
 8     }
 9 
10     public void getThreadLocal() {
11 
12            threadLocal.get().foreach(name -> System.out.println(Thread.currentThread().getName()+"###" + name ));  
13     }
14 
15 
16     public static void main(String[] args) {
17 
18              final ThreadLocalTest test = new ThreadLocalTest();
19              
20              new Thread(new Runnable() {
21             @Override
22             public void run() {
23                 List<String> strs = new ArrayList<String>();
24                 strs.add("1");
25                 strs.add("2");
26                 strs.add("3");
27                 t.setThreadLocal(strs);
28                 t.getThreadLocal();
29             }
30         },"t1").start();
31         
32         new Thread(new Runnable() {
33             
34             @Override
35             public void run() {
36                 List<String> strs = new ArrayList<String>();
37                 strs.add("a");
38                 strs.add("b");
39                 t.setThreadLocal(strs);
40                 t.getThreadLocal();
41             }
42         },"t2").start();
43     }
44 
45 }

t1 t2線程各自獲取到自己的線程的所屬的變量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM