ThreadLocal的简单理解
来源:互联网 发布:ubuntu 删除openjdk 编辑:程序博客网 时间:2024/05/12 06:07
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>();
}
0 0
- ThreadLocal的简单理解
- ThreadLocal的简单理解
- ThreadLocal的简单理解
- ThreadLocal简单的学习和理解过程
- DRP-ThreadLocal简单理解
- ThreadLocal简单理解
- 简单理解ThreadLocal
- ThreadLocal简单理解
- ThreadLocal简单理解
- 笔记-ThreadLocal简单理解
- Java 关于ThreadLocal线程池的简单理解
- 对ThreadLocal的理解
- ThreadLocal的理解
- ThreadLocal的理解
- 关于ThreadLocal的理解
- 对ThreadLocal的理解
- ThreadLocal的理解(转载)
- ThreadLocal类的理解
- Java基础学习笔记:(三)类与对象
- 今日头条面试题(代码题)—— 查找字符串B的字符任意一种组合是否是字符串A的子串
- ZOJ3203-Light Bulb
- java微信公众号开发学习笔记(一)——vps购买及tomcat服务器搭建
- (转)Material Design之CollapsingToolbarLayout使用
- ThreadLocal的简单理解
- OSG设置半透明显示
- python进阶学习笔记(七)——利用__call__将类转化为可调用的对象
- Spring之设值注入
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- JavaBean
- Flashback Database 闪回数据库
- XJTUOJ 14 树状数组
- 模型评估与选择-----第二部分