ThreadLocal的简单理解
2017-04-12 21:57
288 查看
package threadLocal;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
public class thread {
// @Test
//public void demo(){
// final ThreadLocal<String> t=new ThreadLocal<String>();
// t.set("moving");//存
// String s=t.get();//得到
// System.out.println(s);//打印
// new Thread(){//匿名内部类对象的实例化
// public void run(){
// System.out.println("匿名内部内启动了"+t.get());
// }
// }.start();
//}
//上面的方法等同于下面的方法
@Test
public<T> void demo2(){
final T key = null;
final Map<Thread, T> aMap=new HashMap<Thread, T>();
aMap.put(Thread.currentThread(), key);
new Thread(){
public void run(){
System.out.println(Thread.currentThread().getName());
System.out.println(Thread.currentThread());
}
}.start();
}
}
//模拟ThreadLocal的内部实现
class TL<T>{//ThreadLocal底层是map集合
private Map<Thread, T> map=new HashMap<Thread, T>();//用当前的线程做键
public void set(T data){
map.put(Thread.currentThread(),data);//加入当前线程有值
}
public T get() {
return map.get(Thread.currentThread());//得到当前线程所对应的value
}
public void remove(){
map.remove(Thread.currentThread());//删除当前线程的值和键
}
}
//通常用在一个类的成员上,每个线程访问它时都是自己的,互不干扰
//之后可以写上ThreadLocal<Connction>处理并发访问的问题了
//可以处理并发访问的情况
class people{
private ThreadLocal<String> name=new ThreadLocal<String>();
}
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
public class thread {
// @Test
//public void demo(){
// final ThreadLocal<String> t=new ThreadLocal<String>();
// t.set("moving");//存
// String s=t.get();//得到
// System.out.println(s);//打印
// new Thread(){//匿名内部类对象的实例化
// public void run(){
// System.out.println("匿名内部内启动了"+t.get());
// }
// }.start();
//}
//上面的方法等同于下面的方法
@Test
public<T> void demo2(){
final T key = null;
final Map<Thread, T> aMap=new HashMap<Thread, T>();
aMap.put(Thread.currentThread(), key);
new Thread(){
public void run(){
System.out.println(Thread.currentThread().getName());
System.out.println(Thread.currentThread());
}
}.start();
}
}
//模拟ThreadLocal的内部实现
class TL<T>{//ThreadLocal底层是map集合
private Map<Thread, T> map=new HashMap<Thread, T>();//用当前的线程做键
public void set(T data){
map.put(Thread.currentThread(),data);//加入当前线程有值
}
public T get() {
return map.get(Thread.currentThread());//得到当前线程所对应的value
}
public void remove(){
map.remove(Thread.currentThread());//删除当前线程的值和键
}
}
//通常用在一个类的成员上,每个线程访问它时都是自己的,互不干扰
//之后可以写上ThreadLocal<Connction>处理并发访问的问题了
//可以处理并发访问的情况
class people{
private ThreadLocal<String> name=new ThreadLocal<String>();
}
相关文章推荐
- DRP-ThreadLocal简单的理解
- ThreadLocal的简单理解
- DRP-ThreadLocal简单理解
- ThreadLocal简单理解
- Java 关于ThreadLocal线程池的简单理解
- 笔记-ThreadLocal简单理解
- 简单理解ThreadLocal
- ThreadLocal 理解和简单使用场景
- 简单理解ThreadLocal原理和适用场景,多数据源下ThreadLocal的应用
- 简单理解ThreadLocal原理和适用场景
- DRP-ThreadLocal简单理解
- ThreadLocal简单理解
- ThreadLocal简单理解
- ThreadLocal简单的学习和理解过程
- 简单工厂模式和抽象工厂模式的通俗理解
- 完成端口的简单理解
- 打破沙锅——AOP简单理解
- 简单理解asp.net 2.0 三层开发
- 对Jena的简单理解和一个例子
- 理解最简单的COM客户