ThreadLocal類原理及測試用例
阿新 • • 發佈:2020-08-28
main執行緒類:
public class DemoThreadLocal { public static void main(String[] args) { ThreadLocal<String> tl = new ThreadLocal<>(); //獲取當前main執行緒物件繫結的值 String s = tl.get(); System.out.println(s); //null //給當前main執行緒物件繫結值 tl.set("hello ThreadLocal"); String s1= tl.get(); System.out.println(s1); //hello ThreadLocal //開啟一個新執行緒 SubThread subThread = new SubThread(tl); subThread.start(); } }
subThread執行緒類:
public class SubThread extends Thread { private ThreadLocal<String> tl; public SubThread(ThreadLocal tl){this.tl = tl; } @Override public void run() { //獲取當前執行緒物件上繫結的值 String s = tl.get(); System.out.println("當前執行緒物件繫結的值:"+s); //當前執行緒物件繫結的值:null tl.set("蕪湖"); String s1 = tl.get(); System.out.println("當前執行緒物件繫結的值:"+s1); //當前執行緒物件繫結的值:蕪湖 } }