ThreadLocal深入研究-spring

原创 2013年12月04日 16:26:27

request作用域的Bean、事务管理、任务调度、AOP等模块共享变量的思想及源代码的实现:

// 共享数据的公共接口
interface TopInterface {
	ThreadLocal<String> threadLocal = new ThreadLocal<String>();// 三层共享的线程变量
}

class TestDao implements TopInterface {
	
	public void save(String name) {
		if(null == threadLocal.get()) 
			threadLocal.set(name);
	}
	
	public String find() {
		return threadLocal.get();
	}
}

class TestServiceImpl implements TopInterface {
	private TestDao dao = new TestDao();
	
	public void save(String name) {
		dao.save(name);
	}
	
	public String find() {
		return threadLocal.get();
	}
}

class TestActionImpl implements TopInterface {
	private TestServiceImpl service = new TestServiceImpl();
	
	public void save(String name) {
		service.save(name);
	}
	
	public String find() {
		return threadLocal.get();
	}
}


 

测试代码:

public static void main(String[] args) {
		TestActionImpl action = new TestActionImpl();
		action.save("张三");
		
		TestDao dao = new TestDao();
		System.out.println("hello : " + dao.find() + ", 这是dao层");
		
		TestServiceImpl service = new TestServiceImpl();
		System.out.println("hello : " + service.find() + ", 这是service层");
		
		System.out.println("hello : " + action.find() + ", 这是action层");
		
	}


 

输出结果:

hello : 张三, 这是dao层
hello : 张三, 这是service层
hello : 张三, 这是action层

该变量在多线程环境下是线程安全的,其起重要的还是ThreadLocal。

相关文章推荐

深入研究ThreadLocal

深入研究java.lang.ThreadLocal类     一、概述   ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不...

深入研究java.lang.ThreadLocal类 [转]

转自http://lavasoft.blog.51cto.com/62575/51926 一、概述  ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是...

ThreadLocal深入研究

不久前我写过一篇关于ThreadLocal用法的文章,但最近项目上出现了Memory Leak,调查后发现可能与ThreadLocal的使用有关,在此对ThreadLocal的使用作一些补充。 在...
  • oyl822
  • oyl822
  • 2015年04月08日 23:54
  • 417

深入研究java.lang.ThreadLocal类,以HibernateUtil为实例

深入研究java.lang.ThreadLocal类     一、概述   ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,...
  • Baple
  • Baple
  • 2014年10月09日 08:49
  • 659

深入研究java.lang.ThreadLocal类

一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为T...

spring3 MVC深入研究

Spring3 MVC 深入研究 分类: spring mvc 2012-04-13 14:19 233人阅读 评论(0) 收藏 举报 springmvcservletstr...

Spring3 MVC 深入研究

原文地址: 一、前言:elf8848.iteye.com/blog/875830 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了...

【推荐】Spring 3 MVC深入研究

一、前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,...

Spring3 MVC 深入研究--访问静态资源

一、前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是...

Spring深入研究(一)

Spring创建Spring配置文件 Spring配置文件 名字位置不固定放在src目录下面,命名applicationContext.xml schema约束 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ThreadLocal深入研究-spring
举报原因:
原因补充:

(最多只允许输入30个字)