ThreadLocal 引用传递 | 学习笔记

简介: 快速学习 ThreadLocal 引用传递。

开发者学堂课程【Java 面试疑难点串讲1:面试技巧及语言基础:ThreadLocal 引用传递】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/24/detail/496


ThreadLocal 引用传递


内容介绍

一、ThreadLocal 引用传递


一、ThreadLocal 引用传递

ThreadLocal 的本身作用就是进行操作对象信息保存,但是它与传统的信息保存不同,它不仅仅保存的是一个引用对象,而且还保存有一个当前对象。也就是说进行数据保存的时候 ThreadLocal 更像 Map 集合。

范例:引用的麻烦

class Message {

private string note ;

public string getNote( ) {

{

return note;

}

public void setNote( String note) {            ng  note) {

this.note = note;

}

@override

public String tostring( ) {      {

return this.getNote();    );

}

}

class Demo {

public void print(Message msg) {//需要明确的传递Messagve msg) {//需要明确的传递Message类对象的内容

system.out.println( msg);     lSg);

}

}

public class TestThreadLocalDemo {     Demo {

public static void main( String[] args ) i

string[] args ) {

Message temp = new Message() ;   lessage() ;

temp.setNote( "www.mldn.cn" );   dn.cn" );

new Demo( ).print(temp) ; //明确的需要进行一个引用对象传递p);

//明确的需要进行一个引用对象传递过程

现在既然 Demo 类中的 print) 方法核心的目的是接收 Message 类的对象,那么在这样的情况下不希望进行引用传递;

那么一旦不希望进行引用传递的话,这个时候就想到可以利用一个中间的环节类。

范例:避免引用传递

q.png

在之前的程序上所有的程序的功能都是在主线程完成的,所以该程序属于一个单线程的程序,如果说要进行多线程的访问开发的话,那么就会发现问题。

范例:观察多线程的操作问题

这种问题就出现在多个线程中的 Message 类的对象交叉进行 DataCache 类中  msg,对象引用的改变。

范例:通过 ThreadLocal 保存

qq.png

在进行数据保存的引用传递的时候不再只是一个引用类型,而是包含有一个 currentThread 对象信息保存,这样就可以明确的知道当前操作的对象数据是什么,并且不会与其它线程进行混淆。

 

相关文章
|
6月前
|
存储 Java Spring
ThreadLocal用法
ThreadLocal用法
52 0
|
6月前
|
存储 Java 测试技术
ThreadLocal:线程专属的变量
ThreadLocal:线程专属的变量
69 0
|
6月前
|
存储 安全 Java
【线程本地变量ThreadLocal】—— 每天一点小知识
【线程本地变量ThreadLocal】—— 每天一点小知识
101 0
|
安全 Java
Java多线程对于成员变量和局部变量的影响
Java多线程对于成员变量和局部变量的影响
|
存储 前端开发 Java
ThreadLocal学习笔记(一)
ThreadLocal学习笔记(一)
ThreadLocal学习笔记(一)
|
缓存 Java
ThreadLocal引用分析
ThreadLocal引用分析
【学习笔记】深入理解ThreadLocal(2)
【学习笔记】深入理解ThreadLocal
130 0
【学习笔记】深入理解ThreadLocal(2)
|
存储 Java API
【学习笔记】深入理解ThreadLocal(1)
【学习笔记】深入理解ThreadLocal
104 0
【学习笔记】深入理解ThreadLocal(1)
|
Java
Java面向对象-方法的值传递和引用传递
Java面向对象-方法的值传递和引用传递
115 0