`

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 同一个值

}
};



}




}
分享到:
评论

相关推荐

    ThreadLocal应用示例及理解

    ### ThreadLocal基本使用 创建ThreadLocal实例时,通常会定义一个泛型参数,代表该线程局部变量的类型。例如: ```java ThreadLocal&lt;String&gt; threadLocal = new ThreadLocal(); ``` ### 设置和获取值 在...

    threadLocal

    在Java的`ThreadLocal`实现中,每个线程都有一个`ThreadLocalMap`,它是`ThreadLocal`的一个内部类,用于存储线程局部变量。`ThreadLocalMap`使用弱引用作为键,目的是在线程不再引用ThreadLocal对象时,允许垃圾...

    JDK的ThreadLocal理解(一)使用和测试

    ThreadLocal的基本用法 ThreadLocal的用法非常简单,首先创建一个ThreadLocal实例,然后通过`set()`方法设置线程局部变量的值,通过`get()`方法获取该值。需要注意的是,ThreadLocal中的变量并不是存储在堆内存中...

    事务的封装和Threadlocal实例

    总的来说,结合JDBC的事务管理和ThreadLocal,我们可以在多线程环境中更好地实现数据库操作,确保数据的一致性,并提高代码的可复用性和安全性。通过使用ThreadLocal,我们可以创建线程安全的变量,使得每个线程都能...

    Spring事务处理-ThreadLocal的使用

    首先,了解Spring事务管理的基本概念。在多线程环境中,事务管理是至关重要的,它负责确保一组数据库操作要么全部成功,要么全部失败。Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。声明式...

    理解threadlocal

    下面是一个基本的实现: ```java public class SimpleThreadLocal&lt;T&gt; { private Map, T&gt; valueMap = new HashMap(); public void set(T newValue) { valueMap.put(Thread.currentThread(), newValue); } ...

    Java并发编程中ThreadLocal的原理与应用分析

    通过本文的学习,能够掌握ThreadLocal的基本用法及其内部实现原理,从而正确地使用ThreadLocal以提高程序的性能和稳定性。 其他说明:为了更好地理解ThreadLocal的工作机制,建议实际动手尝试文中提供的实例代码,...

    threadlocal.rar

    - **避免使用基本类型或null作为ThreadLocal的类型**:这样做可能导致意外的空指针异常。最好使用包装类,或者自定义类型,确保初始值有意义。 通过上述分析,我们可以看出`ThreadLocal.rar`中的代码示例可能涉及了...

    javaweb 通过threadlocal 手动提交事务

    通过上述方式,开发者可以利用ThreadLocal在Java Web环境中实现手动事务管理,保证数据操作的一致性和正确性。然而,考虑到代码的可维护性和复杂性,通常推荐使用Spring等框架提供的声明式事务管理。

    Android 中 ThreadLocal使用示例

    ThreadLocal基本用法 #### 2.1 初始化 首先,我们需要创建一个ThreadLocal实例,例如: ```java private static ThreadLocal&lt;String&gt; mThreadLocal = new ThreadLocal(); ``` #### 2.2 存储值 然后,在需要的...

    ThreadLocal 线程本地变量 及 源码分析.rar_开发_设计

    1. **ThreadLocal的基本用法** - 创建ThreadLocal实例:`ThreadLocal&lt;T&gt; threadLocal = new ThreadLocal();` - 设置线程局部变量:`threadLocal.set(value);` - 获取线程局部变量:`T value = threadLocal.get();...

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

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

    Java ThreadLocal用法实例详解

    ThreadLocal的基本使用非常简单,只需要定义一个ThreadLocal变量,然后使用set方法设置初始值,使用get方法获取当前线程的值。 ThreadLocal的实现原理基于ThreadLocalMap,该map将每个线程作为key,线程局部变量...

    java线程封闭之栈封闭和ThreadLocal

    栈封闭和 ThreadLocal 是 Java 线程封闭中两种常见的实现方式。 栈封闭 栈封闭是将资源封闭在每个线程的栈中,以保证线程安全。由于每个线程都有自己的虚拟机栈,所以在栈中存放的资源是线程私有的,不会被其他...

    java高并发相关知识,threadLocal,分布式锁,java各种锁等

    synchronized关键字是最基本的同步锁,它可以用来修饰方法或者代码块,以保证同一时刻只有一个线程可以执行被修饰的部分。ReentrantLock是一种可重入锁,它提供了比synchronized更广泛的锁操作,例如尝试非阻塞地...

    Android 中ThreadLocal的深入理解

    在深入理解ThreadLocal之前,我们需要明确其基本用法。ThreadLocal有一个`set`方法用于存储数据,一个`get`方法用于获取数据。这两个方法的操作都是针对当前线程进行的。下面我们将详细解析这两个方法的实现过程。 ...

    线程安全你还在用synchronized?

    #### 三、`ThreadLocal`的基本原理 `ThreadLocal`能够实现为每个线程维护独立的变量副本,其内部实现依赖于`ThreadLocalMap`结构。每个线程中都有一个`ThreadLocalMap`实例,用于存储线程局部变量的副本。`...

    SpringBoot配置多数据源实现动态切换数据源

    接下来是动态切换数据源的关键,这通常通过AOP(面向切面编程)和ThreadLocal来实现。创建一个自定义的`Aspect`,并在方法执行前根据业务逻辑选择合适的数据源: ```java @Aspect @Component public class ...

    基于Android的面试宝典.zip

    ThreadLocal的实现原理 生产者消费者模型 线程池的实现方式 JVM相关(1.271.31) 垃圾回收机制 分代回收算法 垃圾回收算法 类加载过程(双亲委托) JMM(Java内存结构模型) Android基础(1.251.27) ...

    java基本面试题

    - ThreadLocal的理解与应用。 10. **反射机制**: - Class类的使用,动态加载类,获取类信息,创建对象等。 - Method, Field, Constructor对象的使用,以及invoke()方法。 以上只是Java面试中可能涉及的一部分...

Global site tag (gtag.js) - Google Analytics