- Entry和Map的关系???
ThreadLocal简介
public static修饰的变量可以让所有线程共享,但是如果让每个线程有自己独享的数据对象,则使用java.lang.ThreadLocal类。他可以将线程和数据对象绑定在ThreadLocal的静态内部类ThreadLocalMap中,以实现线程独享数据对象。
《java并发编程实战》中提到两种情况下可用ThreadLocal将数据集与线程绑定:
- 防止对可变单实例变量或者全局变量进行共享;
- 当某个频繁的操作需要一个临时对象,同时有希望避免在每次执行时都重新分配该对象;
1.使用示例
package me.demo;
public class Accessor implements Runnable {
private final int id;
public Accessor(int id) {
this.id = id;
}
@Override
public void run() {
while(!Thread.currentThread().isInterrupted()){
//不会清空"中断状态": return isInterrupted(false)
ThreadLocalVariableholder.increment();//TODO:1.为当前线程设置值;2.被操作的变量是static的
System.out.println(this);
Thread.yield();
}
}
@Override