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(线程局部变量).也 ...
随机推荐
- 3ds max学习笔记(十三)-- (锥化,扭曲,晶格)
锥化: 新建一个长方体,在修改器列表中选择--锥化: 参数同弯曲有些类似 参数里: 数量:控制上界面的缩放 曲线:橘黄色的线(但模型未发生变化,此时,可以回到物体身上,调整对应方向上的分段数) 组(有 ...
- java第二周的作业
package java第二周学习; import javax.swing.JOptionPane; public class 数学题 { private int a; private int b; ...
- 怎么样从多列的DataTable里取需要的几列
方法一: 也是广为人知的一种: YourDataTable.Columns.Remove("列名"); 但是这种情况只适合于去掉很少列的情况. 如果有很多列我却只要一两列呢,那就得 ...
- db2 reorg runstats rebind具体操作
db2 reorg runstats rebind具体操作 #reorg table db2 -x "select 'reorg table '||rtrim(tabschema)||'.' ...
- 图解 Git
https://juejin.im/entry/5917c463da2f60005de84195
- NLP 第7章 文本向量化
- commit 冲突
git status or repo sync . 时看到如下的提示: error: packages/apps/app/: branch alpha is published (but not me ...
- method.invoke(...)反射点
import java.lang.reflect.Method; import java.util.Arrays; /** * @Author: hoobey * @Description: * @D ...
- intellj idea 跑覆盖率
- [转]numpy 100道练习题
100 numpy exercise 翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源:https://github.com/rougier/numpy-100 Nu ...