jdk src 学习 Threadlocal
示例:
import java.io.Serializable; public class TestThreadLocal implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1279921928557717157L; int age; public static void main(String[] argv) throws Exception { TestThreadLocal tt = new TestThreadLocal(); Testthread t1 = new Testthread(tt);
Testthread t2 = new Testthread(tt);
Testthread t3 = new Testthread(tt); t1.start();
t2.start();
t3.start(); } static int ii = ;
// static Integer ii = 0; // public Integer getIi() {// 这个方式不行
// ii ++;
// return ii;
// } public Integer getIi() {
// tl.set( ii ++ ); // 这个方式也不行, 必须要下面的方式。
tl.set(tl.get() + );
return tl.get();
} /**
* { } 内部的初始化是必须的。 否则出现 nullpointexception
*/
ThreadLocal<Integer> tl = new ThreadLocal<Integer>() {
protected Integer initialValue() {
ii = ;
return ii;
};
}; } class Testthread extends Thread { TestThreadLocal ttl; public Testthread(TestThreadLocal ttl) {
this.ttl = ttl;
} @Override
public void run() {
String name2 = Thread.currentThread().getName();
for (int i = ; i < ; i++) {
System.out.println(" name " + name2 + ttl.getIi());
}
}
}
ThreadLocal 的作用在于,将某些变量绑定到线程中去, 提供一种,线程安全的方式操作某些变量。
jdk src 学习 Threadlocal的更多相关文章
- 深入学习ThreadLocal原理
上文我们学习了ThreadLocal的基本用法以及基本原理,ThreadLocal中的方法并不多,基本用到的也就get.set.remove等方法,但是其核心逻辑还是在定义在ThreadLocal内部 ...
- JDK源代码学习系列07----Stack
JDK源代码学习系列07----Stack 1.Stack源代码很easy ...
- JDK源代码学习系列04----ArrayList
JDK源代码学习系列04----ArrayList 1 ...
- JDK源代码学习系列05----LinkedList
JDK源代码学习系列05----LinkedList 1.LinkedList简单介绍 LinkedList是基于双向 ...
- 《Java JDK 8 学习笔记》序
摘录自<Java JDK 8 学习笔记> 翻开一本书,无非是想从书中得到知识,只是为何你要得到书中的知识,才是我想知道的答案,而这个答案决定了你在取得知识的过程中是否快乐! 多数人在取得知 ...
- JDK源代码学习系列03----StringBuffer+StringBuilder
JDK源代码学习系列03----StringBuffer+StringBuilder 因为前面学习了StringBuffer和StringBuilder的父类 ...
- java并发编程学习: ThreadLocal使用及原理
多线程应用中,如果希望一个变量隔离在某个线程内,即:该变量只能由某个线程本身可见,其它线程无法访问,那么ThreadLocal可以很方便的帮你做到这一点. 先来看一下示例: package yjmyz ...
- java多线程学习-ThreadLocal
为了凑字,把oracle文档里介绍ThreadLocal抄过来 public class ThreadLocal<T> extends Object This class provides ...
- JDK源代码学习-基础类
一.概述 1.Java,是一套语言规范,例如规定了变量如何定义.控制语句如何写等,提供基本的语法规范.JDK是java自带的一套调用组件,是对基本java语法规范的进一步封装,jdk中都是使用java ...
随机推荐
- [蓝桥杯]ALGO-91.算法训练_Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,“Unclear”和“Nuclear”.“Rimon”和“MinO ...
- Python 模块EasyGui详细介绍
转载:无知小德 Python 模块EasyGui详细介绍 EasyGui 官网: http://easygui.sourceforge.net 官方的教学文档:http://easygui-docs- ...
- P1015回文数
传送 回文数的判断有个神奇的公式: g[i]==g[leng+-i] 其中leng为字符串长度,看每个g[i]是否都满足它,若满足,就是回文数 ps:洛谷的impossible有毒,必须得复制题干中的 ...
- css-去掉IE浏览器自带×号
1.去除IE输入框的叉号 /* 去除IE输入框的叉号 */ ::-ms-clear, ::-ms-reveal{ display:none; } 2.前端多行展现代码,多余部分使用...代替 div{ ...
- 显示定位方法,提取中间text 封装成函数的方法
tager='工作台' element=WebDriverWait(self.dr,15,0.1).until( eval("lambda x: x."+'find_element ...
- flume-拦截器、channel选择器、sink组合sink处理器
1. Flume Interceptors Flume有能力修改/删除流程中的events.这是在拦截器(interceptor)的帮助下完成的.拦截器(Interceptors)是实现org.apa ...
- 中级 jQuery 了解
初级阶段的知识已经结束:中级要接触的东西:jQuery php css3 移动端: get Context("2d") 2d画布: draw Image() 绘制 ...
- BrowserSync前端同步测试工具
安装教程
- [UE4]Break展开复杂数据结构
- 2018/11/5 每日分析-test
郑醇1901,M30向上一笔中,只是看起来不太值得做,主要因为现在30分钟向上一笔空间无法判定,未必能上去(M5中枢如果向上突破并且不背驰才可能有机会:如果直接下去或者向上后背驰,那么这里就只是一个M ...