Java常见面试题:ThreadLocal对象处理

ThreadLocal对象处理

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

范例:引用的麻烦

Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理

现在Demo类中的print()方法核心的目的是接收Message类的对象,在这样的情况下不希望进行引用传递,那么一旦不希望进行引用传递的话,这个时候就想到可以利用一个中间的环节类。

范例:避免引用传递

Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理

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

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

Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理

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

Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理
Java常见面试题:ThreadLocal对象处理

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

更多专业知识,面试技巧就在阿里云开发者社区,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

上一篇:Linux各种文件系统(ext3,ReiserFS,jfs,xfs)的性能


下一篇:《UML面向对象设计基础》—第1章1.4节对象标识