`

模拟ThreadLocal

 
阅读更多
package com.test;

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

public class MyThreadLocal {
	private Map<String, Thread> map = new HashMap<String, Thread>();
	//获取当前对象
	public Thread get(){
		Thread thread = new Thread();
		//存放当前线程的信息
		if(map.get(thread) == null){
			map.put(thread.toString(), thread);
			return thread;
		}else{
			return map.get(thread);
		}
	}
	
	//从map中移除当前线程
	public void remove(){
		Thread th = Thread.currentThread();
		if(map.get(th) != null){
			map.remove(th);
		}
	}
	public static void main(String[] args) {
		MyThreadLocal my = new MyThreadLocal();
		Thread th = my.get();
		System.out.println(th);
	}
}

 这里只是根据个人的理解,简单的模拟了一下其实现原理,日后再补充吧

分享到:
评论

相关推荐

    ThreadLocal源码分析和使用

    我们可以自己模拟 ThreadLocal,例如: ```java public class SimpleThreadLocal{ private Map valueMap=Collections.synchronizedMap(new HashMap()); public void set(Object newValue){ valueMap.put(Thread....

    threadLocal

    - `用HttpClient来模拟浏览器GET_POST.doc`: 展示了如何利用HttpClient库模拟浏览器发送GET和POST请求,包括参数传递、Cookie管理等。 - `java多态.doc`和`java多态.ppt`: 这两份文档可能详细讲解了Java的多态特性,...

    Java单线程ThreadLocal串值问题解决方案

    在示例代码中,我们使用了server.tomcat.max-threads=1配置来限制Tomcat服务器的线程池大小为1,这样可以模拟出多线程环境下的问题。 总结 Java单线程ThreadLocal串值问题解决方案主要介绍了Java单线程ThreadLocal...

    实例讲解Java并发编程之ThreadLocal类

    以下是一个简单的ThreadLocal模拟实现: ```java import java.util.Collections; import java.util.HashMap; import java.util.Map; public class SimpleThreadLocal&lt;T&gt; { private Map, T&gt; valueMap = ...

    实现Java高并发隔离 模拟

    1. **线程局部存储(ThreadLocal)**:Java中的`ThreadLocal`类提供了一种线程安全的方式,每个线程都有自己的副本,互不干扰。这样可以避免共享数据导致的并发问题,但需要注意内存泄漏的问题。 2. **锁...

    java8-threadlocal

    - **模拟事务行为**:在分布式服务中,事务的传播可能会跨多个线程。ThreadLocal 可以用来保存事务上下文,如事务 ID,确保每个线程都能访问到正确的事务信息。 - **线程安全的数据共享**:在多线程环境中,通过 ...

    ThreadLocal简介_动力节点Java学院整理

    在main方法中,我们模拟了三个线程,每个线程都可以独立地生成序列号,避免了多线程之间的变量共享问题。 ThreadLocal的优点是: * 实现线程安全:ThreadLocal可以让每个线程拥有自己的变量副本,从而实现线程...

    模拟进程并发机制

    2. **线程局部存储**: 使用`ThreadLocal`类为每个线程创建独立的数据副本,避免了同步需求。 3. **并行流与并行计算**: Java 8引入的`Stream` API支持并行操作,利用多核处理器进行并行计算,提高性能。 通过理解...

    scjp模拟试题三套

    在并发编程中,了解synchronized关键字、volatile变量和ThreadLocal的作用。 8. **反射**:了解反射API,它是Java动态性的重要体现,可以用于在运行时检查和操作类、接口和对象。 9. **JVM**:对Java虚拟机(JVM)...

    servlet 模拟

    3. 线程局部存储:使用`ThreadLocal`类来存储线程相关的数据,每个线程都有自己独立的副本,不会互相影响。 4. 单例模式:如果Servlet实例不需要为每个请求都创建,可以使用单例模式,并确保所有可能的共享状态都是...

    模拟交易引擎测试

    8. **并发与多线程**:模拟交易引擎需要处理大量并发请求,因此会利用Java的并发库,如ExecutorService、Future和ThreadLocal等,以提高系统吞吐量和响应速度。 9. **数据库存储**:持久化数据存储,如MySQL、...

    Java高级程序设计-多线程(二).pptx

    通过实际的案例,如多线程模拟猴子采花、使用同步方法模拟购票、多线程模拟购物订单生成以及使用`ThreadLocal`模拟银行取款等,我们可以深入理解并实践这些多线程编程的概念和技术,从而更好地应对并发编程的挑战。

    Java多线程赛马游戏Java源码

    - `ThreadLocal`:为每个线程提供独立的变量副本,避免了线程间的数据共享问题。 - `CountDownLatch`或`CyclicBarrier`:同步辅助类,用于控制多个线程的并发访问,例如所有马匹都准备好后才开始比赛。 总之,通过...

    订单业务和quartz1

    首先,模拟了一个固定的`userId`值,实际应用中会从登录验证中获取。`cartService.findCartListByUserId(userId)`负责查询与该用户关联的购物车列表,然后将结果传递给页面展示。 2. 数据传递: - **利用Request...

    性能优化总结:CSLA服务端如何使用多线程的解决方案.docx

    可以通过模拟高并发请求来测试服务的稳定性和性能,并根据测试结果调整线程池大小、超时设置等参数。 总之,CSLA 服务端的多线程改造是一个涉及多个层面的过程,包括 WCF 层面的实例化模式调整、线程安全的 ...

    基于Spring+Ibatis的安全线程实现

    通过模拟多线程环境,检查是否存在并发问题,确保代码在真实场景下的正确性。 最后,关于源码阅读,理解Spring和Ibatis的内部实现对于优化线程安全的实现至关重要。例如,深入理解Spring的...

    Java并发编程实践-电子书-05章.pdf

    ThreadLocal&lt;Integer&gt; threadLocal = new ThreadLocal(); threadLocal.set(0); // 每个线程都可以设置自己的值 int value = threadLocal.get(); // 获取当前线程的值 ``` #### 5.2 使用阻塞队列的生产者-消费者...

    mylty_thread_review

    no7_threadlocal ThreadLocal实例及源码解析 no8_volatile volatile实例 no9_daemon_thread 守护线程实例 no10_threadgroup 线程组 no11_thread_catch_exception 指定异常捕获类捕获线程中的异常 no12_...

    Java 编程之数据结构.pdf

    在Java中,枚举类型是由enum关键字定义的,相比之前的class模拟方式,它提供了更简洁、更安全的方式来定义一组命名常量。枚举类型是JDK 5.0新增的一个特性,它实际上会被编译器编译成一个普通的类,其成员变量和方法...

    随机数类.zip

    在C#编程语言中,随机数的生成是一个常见的需求,特别是在模拟、测试、游戏开发以及数据分析等场景。这个“随机数类.zip”文件可能包含了关于如何在C#中使用随机数类的示例代码或者教程。现在,我们将深入探讨C#中的...

Global site tag (gtag.js) - Google Analytics