java多线程(一) ThreadLocal
来源:互联网 发布:网络弊大于利尖锐问题 编辑:程序博客网 时间:2024/04/30 07:15
ThreadLocal机制主要是提供独立的变量副本。例子如下:
主要参考:http://blog.csdn.net/lufeng20/article/details/24314381
package com.test;public class TestNum {//1 声明ThreadLocal类型的对象 //2 通过匿名内部类覆盖重写ThreadLocal的initialValue()方法,初始化private static ThreadLocal<Integer> seqNum = new ThreadLocal<Integer>() {public Integer initialValue() {return 0;}};//3 设置内部变量自增的方法public int getNextNum() {seqNum.set(seqNum.get() + 1);return seqNum.get();} //4 声明一个测试线程 private static class TestClient extends Thread { //4.1 此处的私有成员为1处定义的ThreadLocal类型的对象private TestNum sn; //构造方法public TestClient(TestNum sn) {this.sn = sn;} //run方法public void run() {for (int i = 0; i < 3; i++) {// 4 每个线程打出3个序列值System.out.println("thread[" + Thread.currentThread().getName() + "] --> sn[" + sn.getNextNum() + "]");}}} public static void main(String[] args) {TestNum sn = new TestNum();// 3个线程共享sn,各自产生序列号TestClient t1 = new TestClient(sn);TestClient t2 = new TestClient(sn);TestClient t3 = new TestClient(sn);t1.start();t2.start();t3.start();}}
问题:
1 如何保证不出现内存泄露?
使用完一定要使用remove释放,否则会内存泄露。
2 基本原理是什么?
每个ThreadLocal对象创建一个Map,然后用线程的ID作为Map的key,实例对象作为Map的value,这样就能达到各个线程的值隔离的效果。
0 0
- java多线程(一) ThreadLocal
- java多线程<一>ThreadLocal
- Java多线程之详解ThreadLocal类(一)
- Java多线程(六)、ThreadLocal类
- Java多线程(六)、ThreadLocal类
- Java多线程数据隔离(ThreadLocal)
- (8)Java多线程之ThreadLocal
- Java多线程(10)——ThreadLocal
- java多线程(二)---------------ThreadLocal总结
- Java多线程之ThreadLocal
- Java多线程之ThreadLocal
- JAVA多线程之ThreadLocal
- JAVA多线程----ThreadLocal
- Java多线程之 ThreadLocal
- Java多线程中的ThreadLocal
- java多线程之ThreadLocal
- Java多线程之----ThreadLocal
- java多线程--ThreadLocal类
- ios深度解析之Swift(基本数据类型2)
- linux vim 常用命令 详解
- A Detailed Introduction to K-Nearest Neighbor (KNN) Algorithm
- 复制(克隆)一:dos功能---文件、分区复制(与ghost克隆功能一样)推荐首用
- springboot 是否是你下一个项目应当考虑的框架选型
- java多线程(一) ThreadLocal
- HDU 2102 A计划(BFS)
- OC内存管理
- 前端开发过程中需要注意的细节
- ios深度解析之Swift(分支语句)
- ColorFilter与ColorMatrix
- 堆内存和栈内存详解
- RID、DR、BDR以及广播多路访问、非广播多路访问实验
- 数据结构-算术表达式-算符优先法