iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >快速了解Java中ThreadLocal类
  • 462
分享到

快速了解Java中ThreadLocal类

javathreadlocalava 2023-05-30 20:05:24 462人浏览 安东尼
摘要

最近看Android FrameWork层代码,看到了ThreadLocal这个类,有点儿陌生,就翻了各种相关博客一一拜读;自己随后又研究了一遍源码,发现自己的理解较之前阅读的博文有不同之处,所以决定自己写篇文章说说自己的理解,希望可以起到

最近看Android FrameWork层代码,看到了ThreadLocal这个类,有点儿陌生,就翻了各种相关博客一一拜读;自己随后又研究了一遍源码,发现自己的理解较之前阅读的博文有不同之处,所以决定自己写篇文章说说自己的理解,希望可以起到以下作用:
- 可以疏通研究结果,加深自己的理解;
- 可以起到抛砖引玉的作用,帮助感兴趣的同学疏通思路;
- 分享学习经历,同大家一起交流和学习。

一、 ThreadLocal 是什么

ThreadLocal 是Java类库的基础类,在包java.lang下面;

官方的解释是这样的:
Implements a thread-local storage, that is, a variable for which each thread has its own value. All threads share the same ThreadLocal object, but each sees a different value when accessing it, and changes made by one thread do not affect the other threads. The implementation supports null values.

大致意思是:
可以实现线程的本地存储机制,ThreadLocal变量是一个不同线程可以拥有不同值的变量。所有的线程可以共享同一个ThreadLocal对象,但是不同线程访问的时候可以取得不同的值,而且任意一个线程对它的改变不会影响其他线程。类实现是支持null值的(可以在set和get方法传递和访问null值)。

概括来讲有三个特性:

- 不同线程访问时取得不同的值
- 任意线程对它的改变不影响其他线程
- 支持null

下面分别对这些特性进行实例验证,首先定义一个Test类,在此类中我们鉴证上边所提到的三个特性。类定义如下:

Test.java

public class Test{//定义ThreadLocal private static ThreadLocal name;public static void main(String[] args) throws Exception{name = new ThreadLocal();//Define Thread AThread a = new Thread(){public void run(){System.out.println("Before invoke set,value is:"+name.get());name.set(“Thread A”);System.out.println("After invoke set, value is:"+name.get());}};//Define Thread BThread b = new Thread(){public void run(){System.out.println("Before invoke set,value is :"+name.get());name.set(“Thread B”);System.out.println("After invoke set,value is :"+name.get());}};// Not invoke set, print the value is nullSystem.out.println(name.get());// Invoke set to fill a valuename.set(“Thread Main”);// Start thread Aa.start();a.join();// Print the value after changed the value by thread ASystem.out.println(name.get());// Start thread Bb.start();b.join();// Print the value after changed the value by thread BSystem.out.println(name.get())}}

--结束END--

本文标题: 快速了解Java中ThreadLocal类

本文链接: https://www.lsjlt.com/news/221125.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 快速了解Java中ThreadLocal类
    最近看Android FrameWork层代码,看到了ThreadLocal这个类,有点儿陌生,就翻了各种相关博客一一拜读;自己随后又研究了一遍源码,发现自己的理解较之前阅读的博文有不同之处,所以决定自己写篇文章说说自己的理解,希望可以起到...
    99+
    2023-05-30
    java threadlocal ava
  • 带你快速了解Java中类和对象的关系
    本文重点解读Java里的类和对象的关系 1、首先介绍两个概念 类:类是对现实生活中一类具有共同属性和行为事务的抽象,确定对象将会拥有的属性和行为。 对象:对象是类的一个实例(对象不...
    99+
    2024-04-02
  • 如何快速了解Java中的IO流
    这篇文章主要介绍“如何快速了解Java中的IO流”,在日常操作中,相信很多人在如何快速了解Java中的IO流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何快速了解Java中的IO流”的疑惑有所帮助!接下来...
    99+
    2023-06-16
  • 快速了解Java中NIO核心组件
    背景知识同步、异步、阻塞、非阻塞首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下。同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节)。异步:相对于同步,API调用返回时调用者不知道操作的结果,后面...
    99+
    2023-05-30
    java nio 组件
  • Java中ThreadLocal类怎么使用
    这篇文章主要介绍“Java中ThreadLocal类怎么使用”,在日常操作中,相信很多人在Java中ThreadLocal类怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中ThreadLoca...
    99+
    2023-06-29
  • 怎么快速了解Java多线程
    这篇文章主要讲解了“怎么快速了解Java多线程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么快速了解Java多线程”吧!线程线程的概念:线程(英语:Thread)是操作系统能够进行运算调...
    99+
    2023-06-16
  • Java中的ThreadLocal详解
    目录一、ThreadLocal简介二、ThreadLocal简单使用 三、ThreadLocal的实现原理1、set方法源码2、get方法源码3、remove方法的实现四、Threa...
    99+
    2024-04-02
  • 详解Java中ThreadLocal类型及简单用法
    目录1 基本概念2 简单使用3 应用场景4 底层原理4.1 set(Object)4.2 get()4.3 remove()4.4 ThreadLocalMap5 内存泄漏隐患和防止...
    99+
    2024-04-02
  • 详解Java中的ThreadLocal
    目录一、ThreadLocal简介二、ThreadLocal简单使用三、ThreadLocal的实现原理1、set方法源码2、get方法源码3、remove方法的实现四、Thread...
    99+
    2024-04-02
  • 快速了解Spring Boot
    今天给大家介绍一下Spring Boot MVC,让我们学习一下如何利用Spring Boot快速的搭建一个简单的web应用。环境准备一个称手的文本编辑器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、Ide...
    99+
    2023-05-30
    spring boot 快速入门
  • 快速上手Java中的Properties集合类
    目录概念为什么需要Properties类?Properties总结概念 Java中的Properties文件是一种配置文件,主要用于表达配置信息,格式是文本文件。该类主要用于读取Ja...
    99+
    2023-02-06
    java properties集合类 properties java properties类怎么用
  • Java超详细讲解ThreadLocal类的使用
    目录Threadlocal有什么用:ThreadLocal使用实例API介绍ThreadLocal的使用Threadlocal 的源码分析原理源码内部类ThreadLocalMapT...
    99+
    2024-04-02
  • 如何快速了解Redis
    本篇内容介绍了“如何快速了解Redis”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Redis是现在很...
    99+
    2024-04-02
  • go语言中基本数据类型及应用快速了解
    目录整数特殊的整数类型如果想确定int和uint的大小溢出浮点数复数布尔值字符串字符串的“长度”与遍历字符串的做法字符串的“长度”遍历...
    99+
    2024-04-02
  • 彻底理解Java 中的ThreadLocal
     ThreadLocal是什么  早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ...
    99+
    2023-05-31
    java threadlocal ava
  • Java快速掌握Vector类方法
    目录Vector的基本介绍Vector类支持4种构造方法一些常用的方法1.add方法2.remove方法3.set方法4.size、capacity、get方法代码Vector的基本...
    99+
    2024-04-02
  • 【MySQL】快速了解MySQL基础
    登录MySQL后我们可以使用命令 show databases,来查看有哪些数据库。 show databases; 如果我们想创建一个数据库可以使用 create database 数据库名 [ch...
    99+
    2023-10-20
    mysql 数据库
  • 如何快速了解泛型
    本篇内容介绍了“如何快速了解泛型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、初识泛型在没有泛型的出现之前,我们通常是使用类型为 Obj...
    99+
    2023-06-15
  • 快速了解 PHP 中的 ASCII 数值转换
    PHP 中的ASCII数值转换是编程中经常会遇到的问题。ASCII(American Standard Code for Information Interchange)是一种用于将字...
    99+
    2024-04-02
  • 如何快速了解数据库
    这篇文章主要介绍“如何快速了解数据库”,在日常操作中,相信很多人在如何快速了解数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何快速了解数据库”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作