`

threadlocal的基本实现

 
阅读更多
package com.cgm.threadlocal;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class MyThread {
static Map<Thread, Object> map=new HashMap<Thread, Object>();
public static Object getObj(){
Thread  th=Thread.currentThread();
Object o=map.get(th); 
if (o==null) {               
o=new Random().nextInt(1000);
map.put(th, o);  //保证每一个线程都是一个单独的值 互不干预
}
return o;
}

}



测试类

package com.cgm.threadlocal;

import org.junit.Test;

public class ThreadLoaclTest {
@Test
public void testThread(){


     Object o1= MyThread.getObj();
     Object o2= MyThread.getObj();
  System.out.println(o1);
  System.out.println(o2);  //o1 o2 同一个值
 
 
Thread t=new Thread(){
public void run() {
     Object o3= MyThread.getObj();
     Object o4= MyThread.getObj();
  System.out.println(o3);
  System.out.println(o4);  //o3 o4 同一个值

}
};



}




}
分享到:
评论

相关推荐

    aop-log:项目正式命名为aop-log,基于Spring AOP,ThreadLocal实现方法埋点,埋点信息记录和自定义收集

    AopLogAopLog是基于SpringAop和ThreadLocal实现的一个对请求方法埋点记录与处理的日志工具包。设计目的和场景:使用Spring Aop拦截程序,基本上都是同一个小异,不想日后每个项目都柏林都写一份这样的Aop拦截处理...

    【2018最新最详细】并发多线程教程

    2.线程的状态转换以及基本操作 3.java内存模型以及happens-before规则 4.彻底理解synchronized 5.彻底理解volatile 6.你以为你真的了解final吗? 7.三大性质总结:原子性、可见性以及有序性 8.初识Lock与...

    JAVA面试常见问题整理

    接下来,文章重点讲解了ConcurrentHashMap的原理和实现方式,以及ThreadLocal的原理和使用场景。 最后,文章简要概述了Spring框架的基本概念和作用,包括IOC、AOP、Bean的作用域等内容。同时,还涉及了事务处理的...

    并发编程笔记20190526.docx

    2. ThreadLocal辨析 11 3. 线程间的协作 19 4. 面试题 21 第二章 线程的并发工具类 21 一、 Fork/Join框架的介绍 21 1、实现步骤: 22 2、工作窃取算法 22 3、分而治之 23 4、Fork/Join使用的标准范式 24 5、Fork/...

    java8源码-jdk8:jdk8源码阅读理解

    基本类型的包装类(Character放在最后) String、StringBuffer、StringBuilder、StringJoiner、StringTokenizer(补充正则表达式的知识) CharacterIterator、StringCharacterIterator、CharsetProvider、...

    java线程学习笔记

    一 基本知识 2 1.1 任务Runnable 2 1.2 线程构造器Threat 2 1.3 执行器Executor 2 1.4 任务中返回值Callable接口 3 1.5 休眠 6 1.6 让步 6 1.7 优先级 6 1.8 后台线程(daemon) 6 1.9 加入线程(join) 8 1.10 捕获...

    JenkovTutorial:这是http上Jenkov教程的练习示例

    (带有ThreadLocal变量的示例)。 线程信令。 (带有4个不同的MyWaitNotify对象的2个示例)。 锁具4.1。 基本(带有2个不同的Counter对象的示例)。 4.2。 可重入(例如2个不同的可重入对象)。 Java中的读/写锁。 ...

    疯狂JAVA讲义

    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...

    J2EE开发全程实录(JAVA项目开发)

    7.2.4 元数据设计的基本原则... 109 7.2.5 此“元数据”非彼 “元数据”... 109 7.3 实体元数据... 110 7.3.1 实体元数据格式... 110 7.3.2 元数据编辑器... 113 7.4 元数据引擎设计... 118 7.4.1 实体元数据运行时...

    Zero-Allocation-Hashing:Java的零分配哈希

    零分配散列版本概述该项目提供了一个Java API,用于对Java中的任何字节序列进行哈希处理,包括各种基本数组,缓冲区,“ CharSequence”等。 为Apache 7许可下的Java 7+编写。 与其他类似项目(例如相比,主要区别...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【线程】ThreadLocal的作用 90 【Spring】什么是IOC和DI?DI是如何实现的 91 【Spring】spring中的IOC(控制反转)的原理 92 【Spring】什么是AOP 92 【Spring】Spring事务机制 93 声明式事物 93 编程式事务 94 ...

    java随机数

    另一个值得考虑的是多线程java.lang.ThreadLocal的实例。偷懒的做法是通过Java本身API实现单一实例,当然你也可以确保每一个线程都有自己的一个实例对象。 虽然Java没有提供一个很好的方法来管理java.util.Random的...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    10.2.2 在Java SE环境下使用 Hibernate JPA实现 370 10.2.3 在Java SE环境下使用 TopLink JPA实现 374 10.2.4 在Java SE环境下使用 EntityManager 377 10.2.5 使用orm.xml管理O/R映射 379 10.3 理解实体 382 10.3.1 ...

    java抢票软件源码-interview:java面试题整理

    java抢票软件源码 中高级java面试题整理 一 前端 ...解答: get和post的基本区别?说说 tcp/ip协议、三次握手、窗口滑动机制 解答: ...基本类型数据使用快速排序法,对象数组使用归并...ThreadLocal可以用来共享数据吗; Threa

    Spring.3.x企业应用开发实战(完整版).part2

    9.2.5 Spring使用ThreadLocal解决线程安全问题 9.3 Spring对事务管理的支持 9.3.1 事务管理关键抽象 9.3.2 Spring的事务管理器实现类 9.3.3 事务同步管理器 9.3.4 事务传播行为 9.4 编程式的事务管理 9.5 使用XML...

    Spring3.x企业应用开发实战(完整版) part1

    9.2.5 Spring使用ThreadLocal解决线程安全问题 9.3 Spring对事务管理的支持 9.3.1 事务管理关键抽象 9.3.2 Spring的事务管理器实现类 9.3.3 事务同步管理器 9.3.4 事务传播行为 9.4 编程式的事务管理 9.5 使用XML...

    Spring中文帮助文档

    ThreadLocal目标源 7.11. 定义新的Advice类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.2.1. Mock对象 8.2.2. 单元测试支持类 8.3. 集成测试 8.3.1. 概览 8.3.2. 使用哪个支持框架 8.3.3. ...

    Spring API

    ThreadLocal目标源 7.11. 定义新的Advice类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.2.1. Mock对象 8.2.2. 单元测试支持类 8.3. 集成测试 8.3.1. 概览 8.3.2. 使用哪个支持框架 8.3.3. ...

    leetcode下载-JavaTopic:Java面试题总结

    ThreadLocal的原理? spring事务7种传播特性和隔离级别的理解? spring boot的启动过程 spring事务实现的原理 aop切面 如何解决spring循环依赖问题? Redis篇: redis持久化的原理(RDB、AOF); redis缓存穿透、...

Global site tag (gtag.js) - Google Analytics