java多執行緒(14)ThreadLocal類
阿新 • • 發佈:2018-12-10
- ThreadLocal類物件可以為每一個執行緒都建立一個“副本”,使得好像每一個執行緒都“擁有了”ThreadLocal類物件一樣
- 以下為程式碼示例,具體的講解穿插在程式碼中
class Account2{ private ThreadLocal<String> name = new ThreadLocal<>(); // ThreadLocal物件,每個執行緒都擁有它的一個副本 public Account2(String str){ this.name.set(str); System.out.println("---" + this.name.get()); } // ThreadLocal物件name的get和set方法 public String getName() { return name.get(); } public void setName(String str) { this.name.set(str); } } class MyTest extends Thread{ private Account2 account2; public MyTest(Account2 account2, String name){ super(name); this.account2 = account2; } public void run(){ for(int i=0; i<10; i++){ if(i==6){ // 在i==6的時候,將name設定為各自執行緒的執行緒名,所以在i>=6時name會被替換成 // 對應的執行緒名稱 account2.setName(getName()); } System.out.println(account2.getName() + "賬戶的i值: " + i); } } } public class ThreadLocalTest { public static void main(String args[]){ Account2 account2 = new Account2("初始名"); new MyTest(account2, "流程甲").start(); new MyTest(account2,"流程乙").start(); } }