首页 > 代码库 > 多线程映射工具——线程当地值
多线程映射工具——线程当地值
ThreadLocal相当于一个Map<Thread, T>,各线程使用自己的线程对象Thread.currentThread()作为键存取数据,但ThreadLocal实际上是一个包装了这个Map,并且线程只能存取自己的数据,不能操作其它线程的数据。
- T get()
- set(T)
- remove()
代码示例:
public static void main(String[] args) { String[] names = new String[]{"A", "B", "C", "D", "E"}; for(int i=0; i<names.length; i++){ final String myName = names[i]; new Thread(){ public void run(){ name.set(myName); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } test(); } }.start(); } /* 运行结果: Thread-0 -> 我的名字叫A Thread-2 -> 我的名字叫C Thread-1 -> 我的名字叫B Thread-3 -> 我的名字叫D Thread-4 -> 我的名字叫E */ } private static ThreadLocal<String> name = new ThreadLocal<String>(); public static void test(){ System.out.println(Thread.currentThread().getName() + " -> 我的名字叫" + name.get()); }
多线程映射工具——线程当地值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。