文档章节

Spring和ThreadLocal

echola
 echola
发布于 2016/04/13 14:12
字数 361
阅读 423
收藏 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 Boot系列讲座

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

杜琪
03/02
0
0
【小马哥】Spring Cloud系列讲座

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

杜琪
03/02
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
0
0
Spring Boot实战之基础回顾

本文作者: 吴伟祥 本文链接: https://wuweixiang.cn/2018/08/21/Spring-Boot实战之基础回顾/ 版权声明: 本博客所有文章除特别声明外均为原创,采用CC BY-NC-SA 4.0 许可协议。转载请在文章开...

吴伟祥
08/21
0
0
Spring MVC 使用 JNDI 配置的DataSource

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

平江夜弹
2015/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链教程以太坊源码分析chain-indexer区块链索引一

兄弟连区块链教程以太坊源码分析chain-indexer区块链索引一 chain_indexer 区块链索引 chain_indexer.go 源码解析 chain_indexer 顾名思义, 就是用来给区块链创建索引的功能。 之前在eth协议...

兄弟连区块链入门教程
15分钟前
1
0
社会化分享插件集成分享

一.前提摘要 社会化分享每个app必备的推广需求,无论是拉新,邀请,游戏奖励,等等都离不开分享的影子,下面我们介绍下社会化分享的插件; 首先要说下,现在的社交App,社区App等,国内外的...

佳妮
15分钟前
1
0
IOC 之 Spring 统一资源加载策略

统一资源:Resource org.springframework.core.io.Resource 为 Spring 框架所有资源的抽象和访问接口 它继承 org.springframework.core.io.InputStreamSource接口 作为所有资源的统一抽象,S...

职业搬砖20年
16分钟前
1
0
Python爬虫实战入门一:工具准备

一、基础知识 使用Python编写爬虫,当然至少得了解Python基本的语法,了解: 基本数据结构 数据类型 控制流 函数的使用 模块的使用 不需要过多过深的Python知识,仅此而已。 个人推荐《Pytho...

糖宝lsh
20分钟前
1
0
Hanlp中使用纯JAVA实现CRF分词

Hanlp中使用纯JAVA实现CRF分词 与基于隐马尔可夫模型的最短路径分词、N-最短路径分词相比,基于条件随机场(CRF)的分词对未登录词有更好的支持。本文(HanLP)使用纯Java实现CRF模型的读取与...

左手的倒影
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部