ThreadLocal 引用传递 | 学习笔记-阿里云开发者社区

开发者社区> 学堂小助手> 正文

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 对象信息保存,这样就可以明确的知道当前操作的对象数据是什么,并且不会与其它线程进行混淆。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9967 0
The Road to learn React书籍学习笔记(第四章)
高级React组件 本章将重点介绍高级 React 组件的实现。我们将了解什么是高阶组件以及如何实现它们。此外,我们还将深入探讨 React 中更高级的主题,并用它实现复杂的交互功能。 引用 DOM 元素 有时候我们需要在 React 与 DOM 节点进行交互。
903 0
[20121011]file header reset--bbed学习.txt
[20121011]file header reset--bbed学习.txt     如果数据库数据文件损坏,并且archivelog损坏,这样无法完全恢复,如果仅仅某个数据文件的scn与其他文件不同步,导致该数据文件无法mount.
660 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13727 0
The Road to learn React书籍学习笔记(第一章)
react灵活的生态圈 Small Application Boilerplate: create-react-app Utility: JavaScript ES6 and beyond Styling: plain CSS and inline style Asynchronous Re...
1022 0
多线程程序设计学习(8)Thread-Per-Message
Thread-Per-Message【这个工作交给你模式】一:Thread-Per-Message的参与者--->Client(委托人)--->host(中介开线程)--->hepler(真正工作的工人)       二:Thread-Per-Message模式什么时候使用--->提升响应时间,降低...
942 0
多线程程序设计学习(7)read-write lock pattern
Read-Write Lock Pattern【读写】一:Read-Write Lock Pattern的参与者--->读写锁--->数据(共享资源)--->读线程--->写线程       二Read-Write Lock Pattern模式什么时候使用---> * 为了多线线程环境下保护数据安全,我们必须避免的冲突 * 一个线程读取,另一个线程写入的read-write conflick * 一个线程写入,另一个线程写入的write-write conflick * 一个线程读取,另一个线程也在读取不会产生冲突 *  * 当线程想要获取读取锁定时: * -->已经有线程在执行写入,则等待。
761 0
多线程程序设计学习(12)Thread-soecific storage pattern
Thread-Specific-Storage[线程保管箱]一:Thread-Specific Storage的参与者--->记录日志的线程(ClientThread)--->负责获取不同线程记录日志(Log)--->负责将日志写入文件的类(TsLog)       二:Thread-Specifi...
722 0
1394
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载