/**
* 演示ThreadLocal的使用
*/
public class UseThreadLocal {
static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>(){
@Override
protected Integer initialValue() {
return 1;
}
};
/**
* 运行3个线程
*/
public void StartThreadArray(){
Thread[] runs = new Thread[3];
for(int i=0;i<runs.length;i++){
runs[i]=new Thread(new TestThread(i));
}
for(int i=0;i<runs.length;i++){
runs[i].start();
}
}
/**
*测试线程,线程的工作是将ThreadLocal变量的值变化,并写回,看看线程之间是否会互相影响
*/
public static class TestThread implements Runnable{
int id;
public TestThread(int id){
this.id = id;
}
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();
}
}
ThreadLocal的使用
最新推荐文章于 2025-03-15 17:11:54 发布
本文通过一个具体的示例,深入解析了ThreadLocal在Java中的使用方式。演示了如何创建ThreadLocal实例,初始化值,以及在线程中如何获取和设置ThreadLocal变量的值,展示了线程间数据隔离的重要性。
519

被折叠的 条评论
为什么被折叠?



