文档章节

Spring和ThreadLocal

echola
 echola
发布于 2016/04/13 14:12
字数 361
阅读 436
收藏 4

在spring-framework的源码中,搜索了一下ThreadLocal,发现了如下结果,大家在阅读源码的时候,也可以使用这种方式,最起码,对一个类,一个方法的使用有更深的理解。

输入图片说明

ThreadLocal到底有什么好处呢?

package com.lingdian.spring.test;


public class ThreadLocalTest implements Runnable{

	ThreadLocal<Integer> num2 = new ThreadLocal<Integer>();
	Integer num = 0;
	@Override
	public void run() {
		for(int i=0;i<10;i++){
			addNum2();
			addNum();
			System.out.println(Thread.currentThread().getName()+"[num:"+num+" num2:"+num2.get());
		}
	}
	void addNum2(){
		if(num2.get()==null){
			num2.set(0);
		}
		int m = num2.get().intValue();
		m++;
		num2.set(m);
	}
	void addNum(){
		 num++;
	}

	public static void main(String[] args) {
		ThreadLocalTest threadLocal1 = new ThreadLocalTest();
		new Thread(threadLocal1).start();
		new Thread(threadLocal1).start();
	}
	
}

打印结果:

Thread-1[num:2 num2:1
Thread-0[num:2 num2:1
Thread-0[num:4 num2:2
Thread-0[num:5 num2:3
Thread-1[num:3 num2:2
Thread-0[num:6 num2:4
Thread-0[num:8 num2:5
Thread-0[num:9 num2:6
Thread-0[num:10 num2:7
Thread-1[num:7 num2:3
Thread-0[num:11 num2:8
Thread-0[num:13 num2:9
Thread-0[num:14 num2:10
Thread-1[num:12 num2:4
Thread-1[num:15 num2:5
Thread-1[num:16 num2:6
Thread-1[num:17 num2:7
Thread-1[num:18 num2:8
Thread-1[num:19 num2:9
Thread-1[num:20 num2:10

从代码运行的结果可以看到变量num在Thread-0和Thread-1中被共享了。但是num2却没有。

© 著作权归作者所有

共有 人打赏支持
echola
粉丝 13
博文 23
码字总数 12268
作品 0
西安
程序员
私信 提问
Spring MVC 使用 JNDI 配置的DataSource

稍微看了下,Spring 中JNDI 的使用,弄了个小例子。有很多不完备的地方,以后慢慢看,再改吧。 <一> 技术使用 Spring MVC JDBC Template Maven JNDI <二> 一些配置 Maven POM 配置 spring-c...

平江夜弹
2015/06/29
0
0
eClipse import Spring之后出现的问题

你好,我的 eClipse 是 kepler 版的 , Spring 的下载网址是 https://github.com/spring-projects/spring-framework jdk 版本是 8 的 , java -version 指令显示版本号码是 1.8.0_05 我在 Spri......

Arthur1977
2014/07/12
1K
1
【小马哥】Spring Boot系列讲座

这里为大家推荐一个不错的Spring Boot系列讲座,讲师介绍如下: 小马哥,阿里巴巴技术专家,从事十余年Java EE 开发,国内微服务技术讲师。目前主要负责微服务技术推广、架构设计、基础设施、...

杜琪
2018/03/02
0
0
为什么Java大神,都在看Spring Boot和Spring Cloud的书?

如果你是一名Java开发人员,并且最近正打算学习Spring Boot和Spring Cloud框架并寻找一些关于它们的最好的书籍,那么,你今天就来对地方了。 本文,我们将讨论一些学习Spring Boot和Spring ...

Java小铺
2018/09/18
0
0
Spring的事务管理难点剖析(4):多线程的困惑

由于Spring的事务管理器是通过线程相关的ThreadLocal来保存数据访问基础设施(也即Connection实例),再结合IoC和AOP实现高级声明式事务的功能,所以Spring的事务天然地和线程有着千丝万缕的...

icheer
2012/07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《货币商人》读后感作文选登3800字

《货币商人》读后感作文选登3800字: 领导之法、管理之术的大智慧与小技巧(宝安支行纪委书记葛希) 非常感谢夏书记向我们推荐了这本《货币商人》。这本书我读第一遍时惊现它像一个宝藏,蕴藏...

原创小博客
4分钟前
0
0
面试之ssm粗略简答

说实在的,spring源码对我来说可能就是报错的时候会一个个点进去找错误源头,其他都是为了让自己学习大神们优秀的编程思想和理念(顺便面试的时候吹吹牛皮~) 这次zhjj就直接抛了一个范围很...

无极之岚
5分钟前
0
0
史上最强Dubbo面试25题含答案详解:核心组件+架构设计+服务治理等

1.Dubbo是什么? Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。 RPC 指的是远程调用协议,也就是说两...

mikechen优知
29分钟前
0
0
如何正确的选择云数据库?

本文由云+社区发表 作者:数据库 江湖传说在选择和使用云数据库过程中 10个人有9个会遇到以下问题: 数据库正常使用过程中莫名卡顿 经常遭遇主从延迟和主从不一致 不知如何实现无损跨云跨数据...

腾讯云加社区
30分钟前
0
0
虚拟机下centos7.x简易命令大全与试玩体验

OS: liunx version: centos7.x date: 2019-01-18 1. cd / : 进入服务器根目录 2. cd .. : 进入当前目录的上一级 3. ls : 显示当前目录下的所有文件夹或文件(list的缩写) 4. ip addr : 展示服...

皇冠小丑
41分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部