【代码积累】ThreadLocal
来源:互联网 发布:职业目标 知乎 编辑:程序博客网 时间:2024/06/05 08:01
public class Test {public void test() {ThreadId id = new ThreadId();TaskFac fac = new TaskFac();for( int i=0; i< 10; i++ ) {fac.createTask().start();try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public class Task implements Runnable{private ThreadId id = new ThreadId(); @Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("Task ID ="+ThreadId.get());}}import java.util.concurrent.atomic.AtomicInteger;public class ThreadId {private static final AtomicInteger nextId = new AtomicInteger(0); /*初始化为0,该值用来在每次被引用的时候,生成一个唯一的值*///Thread local variable containing each thread's IDprivate static final ThreadLocal<Integer> threadId = new ThreadLocal<Integer>() {protected Integer initialValue() { /*initialValuez在基类中是protected,不能在子类覆盖的时候reduce visibility,因此也要加上protected*/return nextId.getAndIncrement(); /*nextId 之所以要是static类型,因为有此static方法引用了它,static方法不能引用non-static的field。 * 这里之所以都定义成static类型,因为non-static本身就是线程安全的,而static是非线程安全的,这里是为了说明在多线程访问的场景下, * ThreadLocal的作用。*/}};public static int get() {return threadId.get();}}public class TaskFac {public Thread createTask() {return new Thread(new Task());}}
阅读全文
0 0
- 【代码积累】ThreadLocal
- 代码积累
- 积累代码VS积累经验
- ThreadLocal代码实现原理
- ThreadLocal使用代码欣赏
- 通过代码,了解ThreadLocal
- C#项目代码积累
- iims 代码积累
- QT示例代码【积累】
- JS细节性代码积累
- javascript 代码积累
- 个人代码积累
- android实用代码积累
- Android上积累代码
- c# 积累代码
- 代码积累1----统计图
- PHP 代码积累(一)
- PHP 代码积累(二)
- CSS概要
- 【Linux】线程安全和可重入函数
- pytorch学习笔记(十):learning rate decay(学习率衰减)
- jsonp跨域读取数据例子
- 我与免疫台不得不说的故事(三):风湿性疾病_2
- 【代码积累】ThreadLocal
- Android 拍照或从相册设置头像
- 聊聊大学期间的我是怎样学习Linux系统的
- #!/usr/bin/env python与#!/usr/bin/python的区别
- 3D图形变换中为什么使用四维矩阵,而不是三维矩阵?
- bigchainDB安装
- android 架构探索,浅谈mvp!
- 属于动态图的未来:横向对比PyTorch与Keras
- 递归遍历二叉树代码实例