package com.hana.demo;
import java.util.HashMap;
public class TreadLocalTest {
static ThreadLocal<HashMap> map0 = new ThreadLocal<HashMap>(){
// @Override
// protected HashMap initialValue() {
// System.out.println(Thread.currentThread().getName()+"initialValue");
// return new HashMap();
// }
};
public void run(){
Thread[] runs = new Thread[3];
for(int i=0;i<runs.length;i++){
runs[i]=new Thread(new T1(i));
}
for(int i=0;i<runs.length;i++){
runs[i].start();
}
}
public static class T1 implements Runnable{
int id;
public T1(int id0){
id = id0;
}
public void run() {
System.out.println(Thread.currentThread().getName()+":start");
HashMap map = map0.get();
for(int i=0;i<10;i++){
map.put(i, i+id*100);
try{
Thread.sleep(100);
}catch(Exception ex){
}
}
System.out.println(Thread.currentThread().getName()+':'+map);
}
}
/**
* Main
* @param args
*/
public static void main(String[] args){
TreadLocalTest test = new TreadLocalTest();
test.run();
}
}
打开注解是对的,关闭是错的使用ThreadLocal实例
最新推荐文章于 2024-11-04 20:33:37 发布
本文展示了一个使用Java实现的线程局部变量(ThreadLocal)示例。通过创建多个线程并为每个线程分配独立的HashMap实例,演示了ThreadLocal如何确保每个线程拥有自己的变量副本,从而避免线程间的数据冲突。
摘要由CSDN通过智能技术生成