java的ThreadLocal类的使用方法
java的ThreadLocal类的使用方法,ThreadLocal是一个支持泛型的类,用在多线程中用于防止并发冲突问题。
比如以下的一个样例,就是用于线程添加1,可是相互不冲突
package com.test.threadlocal; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; class Local
{
private static ThreadLocal<Integer> num=new ThreadLocal<Integer>()
{
protected synchronized Integer initialValue()
{
return 1;
}
}; public static void add()
{
num.set(num.get()+1);
}
public static int get()
{
return num.get();
}
} class SelfThread extends Thread
{
public void run()
{
for(int i=0;i<1000;i++)
{
System.out.println(this.getName()+" "+Local.get());
this.yield();
Local.add();
}
}
}
public class MyThreadLocal { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService exec=Executors.newCachedThreadPool();
for(int i=0;i<5;i++)
{
exec.execute(new SelfThread());
} exec.shutdown();
} }
输出结果
Thread-3 973
Thread-1 808
Thread-3 974
Thread-1 809
Thread-3 975
Thread-1 810
Thread-3 976
Thread-1 811
Thread-3 977
Thread-1 812
Thread-3 978
Thread-1 813
Thread-3 979
Thread-1 814
Thread-3 980
Thread-1 815
Thread-3 981
Thread-1 816
Thread-3 982
Thread-1 817
Thread-3 983
Thread-1 818
Thread-3 984
Thread-1 819
Thread-3 985
Thread-1 820
Thread-3 986
Thread-1 821
Thread-3 987
Thread-1 822
Thread-3 988
Thread-1 823
Thread-3 989
Thread-1 824
Thread-3 990
Thread-1 825
Thread-3 991
Thread-1 826
Thread-3 992
Thread-1 827
Thread-3 993
Thread-1 828
Thread-3 994
Thread-1 829
Thread-3 995
Thread-1 830
Thread-3 996
Thread-1 831
Thread-3 997
Thread-1 832
Thread-3 998
Thread-1 833
Thread-3 999
Thread-1 834
Thread-3 1000
Thread-1 835
Thread-1 836
Thread-1 837
Thread-1 838
Thread-1 839
Thread-1 840
Thread-1 841
Thread-1 842
Thread-1 843
Thread-1 844
Thread-1 845
Thread-1 846
Thread-1 847
Thread-1 848
Thread-1 849
Thread-1 850
Thread-1 851
Thread-1 852
Thread-1 853
Thread-1 854
Thread-1 855
Thread-1 856
Thread-1 857
Thread-1 858
Thread-1 859
Thread-1 860
Thread-1 861
Thread-1 862
Thread-1 863
Thread-1 864
Thread-1 865
Thread-1 866
Thread-1 867
Thread-1 868
Thread-1 869
Thread-1 870
Thread-1 871
Thread-1 872
Thread-1 873
Thread-1 874
我们发现。线程会相互切换,可是每一个线程都保持了添加1的顺序,说明没有线程之间的相互干扰。
java的ThreadLocal类的使用方法的更多相关文章
- 深入研究java.lang.ThreadLocal类 (转)
深入研究java.lang.ThreadLocal类 一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thr ...
- Java多线程——ThreadLocal类的原理和使用
Java多线程——ThreadLocal类的原理和使用 摘要:本文主要学习了ThreadLocal类的原理和使用. 概述 是什么 ThreadLocal可以用来维护一个变量,提供了一个ThreadLo ...
- java.lang.String 类的所有方法
java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...
- Java中主类中定义方法加static和不加static的区别
Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...
- Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能
Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能. 下面是个例子: import org.junit.Test; import java. ...
- 深入研究java.lang.ThreadLocal类(转)
引用:http://lavasoft.blog.51cto.com/62575/51926/ 一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并 ...
- 深入研究java.lang.ThreadLocal类
一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许 ...
- Java多线程——ThreadLocal类
一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名 ...
- java.lang.ThreadLocal类
一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也 ...
随机推荐
- 自定义simple_tag和filter在html中渲染出来的联系和区别
关于 simple_tag: 1,在app下创建一个(templatetags)目录,(被引用的模块必须放在该目录下,且目录名称不可更改): 2,创建任意py文件: 3,创建template对象: f ...
- web (Servlet)
1.如果你文档新建的出现很多红色的小擦擦出错 这样做
- GMA Round 1 极坐标的愤怒
传送门 极坐标的愤怒 我也想被积分啊!可是为什么你们从来不知道我的心意!——极坐标 愤怒会夺走理智,哪怕是被迫的也好,请为极坐标方程$r=t$(也写作$ρ=θ$)积分吧. 为了考验你的忠诚,你需要回答 ...
- poj1328 Radar Installation(贪心 策略要选好)
https://vjudge.net/problem/POJ-1328 贪心策略选错了恐怕就完了吧.. 一开始单纯地把island排序,然后想从左到右不断更新,其实这是错的...因为空中是个圆弧. 后 ...
- Wordpress页面只显示一篇文章
- SpringMVC整合FastJson:用"最快的json转换工具"替换SpringMVC的默认json转换
2017年11月23日 09:18:03 阅读数:306 一.环境说明 Windows 10 1709 Spring 4.3.12.RELEASE FastJson 1.2.40 IDEA 2017. ...
- Spring Boot 中application.yml与bootstrap.yml的区别
其实yml和properties文件是一样的原理,且一个项目上要么yml或者properties,二选一的存在. 推荐使用yml,更简洁. bootstrap与application1.加载顺序这里主 ...
- Jetpack 架构组件 Paging 分页加载 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- spring boot使用TestRestTemplate集成测试 RESTful 接口
这篇文章没什么技术含量,只是单纯的记录一下如何用TestRestTemplate访问受security保护的api,供以后查阅. @Slf4j @RunWith(SpringRunner.class) ...
- python接口自动化测试(四)-Cookie&Sessinon
掌握了前面几节的的内容,就可以做一些简单的http协议接口的请求发送了,但是这些还不够.HTTP协议是一个无状态的应用层协议,也就是说前后两次请求是没有任何关系的,那如果我们测试的接口之前有相互依赖关 ...