首页 > 代码库 > java ThreadLocal
java ThreadLocal
public class ThreadLocal<T> extends Object
该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。
方法摘要 | |
---|---|
T | get() 返回此线程局部变量的当前线程副本中的值。 |
protected T | initialValue() 返回此线程局部变量的当前线程的“初始值”。 |
void | remove() 移除此线程局部变量当前线程的值。 |
void | set(T value) 将此线程局部变量的当前线程副本中的值设置为指定值。 |
实验代码如下:abstract class Base{ abstract public int get(); abstract public void set(int value);}class AA extends Base{ ThreadLocal<Integer> i=new ThreadLocal<Integer>() { public Integer initialValue() { return 0; } }; public int get() { return i.get(); } public void set(int value) { this.i.set(value); } }class BB extends Base{ int i; public int get() { return this.i; } public void set(int value) { this.i=value; }}class Test implements Runnable{ Base b; public Test(Base b) { this.b=b; } @Override public void run() { for(int i=0;i<3;i++) { this.b.set(this.b.get()+10); System.out.println( Thread.currentThread().toString()+this.b.get()); } }}public class ThreadLocalTest { /** * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { System.out.println("===============使用ThreadLocal结果如下:=================="); AA aa=new AA(); Thread t11=new Thread(new Test(aa)); Thread t12=new Thread(new Test(aa)); Thread t13=new Thread(new Test(aa)); t11.start(); t12.start(); t13.start(); Thread.sleep(1000); System.out.println("===============不使用ThreadLocal结果如下:=================="); BB bb=new BB(); Thread t21=new Thread(new Test(bb)); Thread t22=new Thread(new Test(bb)); Thread t23=new Thread(new Test(bb)); t21.start(); t22.start(); t23.start(); }}
运行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。