- 浏览: 250243 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
/**
* 线程范围内的数据共享
*
* 应用场景:减少库存量,增加流水账和修改总账 ,这几个操作要在同一个事务中, 事务需要放在线程范围内
*
*
* @time 上午10:10:13
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class ThreadLocalTest {
/**
* @param args
*/
public static void main(String[] args) {
final A a = new A();
final B b = new B();
for (int i = 0; i < 5; i++) {
new Thread() {
@Override
public void run() {
// MyThreadLocalData.set(new Random().nextInt(10000));
// System.out.println(Thread.currentThread() + ":has put " +
// MyThreadLocalData.get());
// a.say();
// b.sayHello();
MyThreadLocalData.getMyThreadLocalInstance().setNum(new Random().nextInt(10000));
System.out.println(Thread.currentThread() + ":has put " + MyThreadLocalData.getMyThreadLocalInstance().getNum());
a.say();
b.sayHello();
MyThreadLocalData.clear();
}
}.start();
}
}
}
/**
* 存放全局变量
*
* @time 上午10:27:49
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
class MyThreadLocalData {
/*
* private static ThreadLocal tl = new ThreadLocal();
*
* public static Object get() { return tl.get(); }
*
* public static void set(Object value) { tl.set(value); }
*/
private static ThreadLocal instanceContainer = new ThreadLocal();
/**
* 构造器
*/
private MyThreadLocalData() {
}
/**
* 单例
*
* @return
*/
public static MyThreadLocalData getMyThreadLocalInstance() {
MyThreadLocalData instance = (MyThreadLocalData) instanceContainer.get();
if (null == instance) {
instance = new MyThreadLocalData();
instanceContainer.set(instance);
}
return instance;
}
/**
* 清除
*/
public static void clear() {
instanceContainer.remove();
}
private Integer x;
public void setNum(Integer x) {
this.x = x;
}
public Integer getNum() {
return x;
}
}
class A {
public void say() {
// System.out.println(Thread.currentThread() + ":A has geted " +
// MyThreadLocalData.get());
System.out.println(Thread.currentThread() + ":A has geted " + MyThreadLocalData.getMyThreadLocalInstance().getNum());
}
}
class B {
public void sayHello() {
// System.out.println(Thread.currentThread() + ":B has geted " +
// MyThreadLocalData.get());
System.out.println(Thread.currentThread() + ":B has geted " + MyThreadLocalData.getMyThreadLocalInstance().getNum());
}
}
发表评论
-
thread local 学习笔记
2012-11-08 15:45 595thread local(thread 的局部变量)解决多 ... -
mina 学习笔记一
2012-11-05 16:33 595mina下载路径 http://mina.apache.or ... -
多线程学习笔记一
2012-09-04 11:03 627/** * 子线程循环10次,主线程100次 如此 ... -
多线程学习笔记二
2012-09-04 11:05 599/** * 传统线程 * * @time 下午06:15 ... -
多线程学习笔记三
2012-09-04 11:06 583/** * 两个线程进行数据交换 * * @time 上 ... -
java swing 学习笔记一(画板Panel )
2012-09-04 11:18 1019/** * 画板 * * @time 3:38:10 P ... -
java swing学习笔记二(画布Canvas)
2012-09-04 11:19 3201/** * 画布 * @time 11:23:53 AM ... -
java IO流学习笔记一
2012-09-08 17:10 450IO 两大主流 16位和8位 16位对应writer和rea ... -
java 类装载器
2012-09-08 18:12 656public class ClassLoaderTest { ... -
并发库学习笔记一
2012-09-28 16:37 612新建线程并启动的几种 ... -
并发库学习笔记二
2012-09-28 16:38 430阻塞队列(生产者和消费者开发模式) 三种常用的阻塞队 Ar ... -
并发库学习笔记三
2012-09-28 16:40 566Synchronized是lock的一种简化实现,一个l ... -
并发库学习笔记四
2012-09-28 16:42 634ConcurrentHashMap并没有实现Lock-Free ... -
并发库学习笔记五
2012-09-28 16:43 695并发流程控制CountDown ... -
java IO流学习笔记二
2012-10-03 00:24 592/** * * * 目录分隔符用\\或/ * * @ ... -
jdk5.0的特性
2012-10-03 00:28 6071静态导入 导入指定类 ... -
java IO流学习笔记三
2012-10-04 23:39 671转换流 inputStreamReader 字节转字符 o ...
相关推荐
多线程学习笔记,通过平时的学习所做的一些笔记,希望对广大同仁有所帮助
多线程学习笔记...多线程学习笔记...多线程学习笔记...多线程学习笔记...
java学习笔记2(多线程)java学习笔记2(多线程)
NULL 博文链接:https://baobeituping.iteye.com/blog/1190260
多线程学习笔记,好资源。包括线程基础等知识多线程学习笔记,好资源。包括线程基础等知识
多线程 学习笔记.md
Python3的多线程学习笔记[定义].pdf
多线程学习笔记,关于创建线程,删除线程等相关指令的应用。
UNIX多线程学习笔记.docx 第一节 概述 第二节 线程 第三节 互斥锁 第四节 条件变量 第五节 线程的私有数据 第六节 Posix有名信号灯 第七节 共享内存
这篇文档和对应的源代码 博文链接:https://interper56-sohu-com.iteye.com/blog/172303
线程的基本概念 线程的创建和启动 线程的调度和优先级 线程的状态控制 线程同步
Java并发编程学习笔记,研究JAVA并发多线程编程的一本教程,使用并发技术可以开发出并行算法,充分利用多处理器的计算能力,避免硬件资源浪费。目前,在JAVA并发编程方面的论述系统且内容详实的技术资料不太多,Java...
JAVA多线程学习笔记整理(csdn)————程序
java多线程学习笔记02(csdn)————程序
四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java线程:线程栈模型与线程的变量 12 Java线程:线程的调度-休眠 13 Java线程:线程的调度-优先级 16 Java线程:线程的...
Posix多线程编程学习笔记,包含多线程编程的众多知识
这是本人学习C++过程中积累的知识,对于学习多线程的同学有很好的参考作用。笔记精简,但叙述清楚。比看书长篇大论效率更高。这是第一份笔记,以后陆续上传。
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....