ThreadLocal简单示例
/** *@author xiannger * *类说明:演示ThreadLocal的使用 */ public class UseThreadLocal { /** * 可以理解为 一个map,类型 Map<Thread,Integer> */ private static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>(){ //定义初始值 @Override protected Integer initialValue() { return 1; } }; /** * 运行3个线程 */ private void startThreadArray(){ Thread[] runs = new Thread[3]; for(int i=0;i<runs.length;i++){ runs[i]=new Thread(new TestThread(i)); } for(Thread t:runs){ t.start(); } } /** *类说明:测试线程,线程的工作是将ThreadLocal变量的值变化,并写回, * 看看线程之间是否会互相影响 */ public static class TestThread implements Runnable{ int id; private TestThread(int id){ this.id = id; } @Override public void run() { System.out.println(Thread.currentThread().getName()+":start"); Integer s = threadLocal.get();//获得变量的值 s = s+id; threadLocal.set(s); System.out.println(Thread.currentThread().getName()+":" +threadLocal.get()); } } public static void main(String[] args){ UseThreadLocal test = new UseThreadLocal(); test.startThreadArray(); } }
执行结果:
Thread-0:start Thread-0:1 Thread-2:start Thread-2:3 Thread-1:start Thread-1:2