ThreadLocal

xiaoxiao2025-11-14  9

ThreadLocal

变量值的共享可以使用public static变量的形式,所有线程都使用同一个public static变量。假如想每个线程都有自己的共享变量,那么就使用ThreadLocal,ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每个线程的私有数据。

如下面例子,可以直接copy去执行

/** * @author 作者 E-mail: * @version * ThreadLocal:每个线程调用存储和取值都是自己的私有数据 */ public class Test { public static void main(String[] args) { ThreadA a=new ThreadA(); ThreadB b=new ThreadB(); a.start(); b.start(); for(int i=0;i<100;i++){ Tools.t1.set("main"+(i+1)); System.out.println("main get value="+Tools.t1.get()); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class Tools { public static ThreadLocal t1=new ThreadLocal(); } class ThreadA extends Thread{ @Override public void run() { for(int i=0;i<100;i++){ Tools.t1.set("ThreadA"+(i+1)); System.out.println("ThreadA get value="+Tools.t1.get()); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class ThreadB extends Thread{ @Override public void run() { for(int i=0;i<100;i++){ Tools.t1.set("ThreadB"+(i+1)); System.out.println("ThreadB get value="+Tools.t1.get()); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
转载请注明原文地址: https://www.6miu.com/read-5039616.html

最新回复(0)