- 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(); } }
这是我看李刚编著的《疯狂Java讲义》后总结出来的。
java多线程(14)ThreadLocal类
最新推荐文章于 2024-07-02 17:27:44 发布