`
aty
  • 浏览: 36511 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JDK的ThreadLocal理解(三)优雅的使用ThreadLoca

阅读更多

ThreadLocal的使用可以参考struts2的ActionContext,个人觉得这种使用方式是比较优雅的:

1、ThreadLocal是业务无关的对象,对于开发代码来说,越少使用越好。

     这样能够尽可能的减少技术细节分散开发者对业务逻辑的关注

 

public class ActionContext implements Serializable 
{
    static ThreadLocal<ActionContext> actionContext = new  ThreadLocal<ActionContext>();

   /**
     * Sets the action context for the current thread.
     *
     * @param context the action context.
     */
    public static void setContext(ActionContext context) {
        actionContext.set(context);
    }

    /**
     * Returns the ActionContext specific to the current thread.
     *
     * @return the ActionContext for the current thread, is never <tt>null</tt>.
     */
    public static ActionContext getContext() {
        return actionContext.get();
    }
}

 经过这种封装后,整个ActionContext类,只有3个地方会涉及ThreadLocal的使用:变量定义、set、get。这3处使用都很简单,不容易出错

 

分享到:
评论

相关推荐

    JDK的ThreadLocal理解(一)使用和测试

    **标题:“JDK的ThreadLocal理解(一)使用和测试”** **正文:** ThreadLocal是Java中的一个非常重要的线程安全工具类,它在多线程编程中扮演着独特的角色。通过创建ThreadLocal实例,我们可以为每个线程提供一个...

    理解threadlocal

    ### 理解ThreadLocal #### 一、ThreadLocal简介 `ThreadLocal`是一个非常有用的类,它在Java 1.2版本中...理解`ThreadLocal`的工作原理及其使用方法,可以帮助我们在多线程编程中更加高效地处理数据和状态管理问题。

    JAVAJDK使用教程

    **JAVAJDK使用教程** Java JDK,全称为Java Development Kit,是开发和运行Java应用程序的基础工具集。它包括了Java编译器、Java虚拟机(JVM)、类库和其他必要的工具,使得开发者能够创建、调试和运行Java程序。本...

    JDK11安装包,JDK11安装包

    JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11...

    深入理解ThreadLocal工作原理及使用示例

    深入理解ThreadLocal工作原理及使用示例 ThreadLocal是Java提供的一种解决多线程程序并发问题的工具类,自JDK1.2版本以来提供了java.lang.ThreadLocal类。ThreadLocal的主要作用是为每个使用该变量的线程提供独立的...

    ThreadLocal_ThreadLocal源码分析_

    **ThreadLocal概述** ThreadLocal是Java中的一个线程局部变量类,它...通过理解ThreadLocal的原理和最佳实践,我们可以更有效地利用它来解决多线程环境下的数据隔离问题,同时也需要注意防止可能出现的内存泄漏风险。

    旧版本JDK JDK1.4

    尽管现在已经被更新的版本如JDK 8、JDK 11和JDK 17所取代,但JDK 1.4对于理解Java的发展历程具有重要意义。 **主要特性** 1. **异常链**:在JDK 1.4中,引入了异常链机制,允许一个异常捕获另一个异常,并将它们...

    jdk8-251 kettle9.2使用jdk版本

    标题“jdk8-251 kettle9.2使用jdk版本”和描述中提及了两个关键组件:Java Development Kit (JDK) 的8u251版本以及Kettle 9.2,这是一款流行的数据集成工具,也称为Pentaho Data Integration(PDI)。这些组件在IT...

    JDK17生产环境免费使用说明及许可协议文件

    Oracle官方HTML格式说明:jdk17生产环境免费使用说明及许可协议(Oracle No-Fee Terms and Conditions) Java 17 LTS is the latest long-term support release for the Java SE platform. JDK 17 binaries are ...

    JDK11使用MapStruct

    JDK11使用MapStruct

    mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系

    mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk...

    jdk1.8安装包+一键设置jdk环境变量脚本

    Java Development Kit(JDK)是Java编程语言的核心组件,它包含编译器、调试器、JRE(Java Runtime ...同时,了解JDK的基本安装和环境变量配置原理,对于理解Java的运行机制和后续的开发工作都是非常有帮助的。

    JDK资源包合集(JDK6+JDK7+JDK8)

    本资源包集合包括了JDK6、JDK7和JDK8三个重要版本,分别代表了Java发展历程中的关键节点。 JDK6,也称为Java SE 6(标准版6),于2006年发布,是Java平台的一个重要里程碑。此版本引入了许多新特性,如改进的Swing...

    jdk11的相关使用说明

    **Java JDK 11 使用详解** Java Development Kit (JDK) 是Java编程语言的核心组件,它包含Java编译器、Java运行环境、调试工具和其他必要的工具,使得开发者能够编写、测试和部署Java应用程序。JDK 11是Java的一个...

    Linux更换JDK+weblogic更换JDK

    #### 三、WebLogic服务器更换JDK ##### 1. 修改WebLogic服务器配置 - 进入WebLogic安装目录下的`bin`文件夹。 - 编辑`setDomainEnv.sh`文件(对于UNIX/Linux环境),找到如下配置段落: ```bash BEA_JAVA_HOME="" ...

    jdk1.6 和jdk1.8

    CHM格式的文档是Windows系统的帮助文件,包含详尽的类库参考和教程,帮助开发者查询和理解各种类和方法的使用。对于不熟悉英文的开发者来说,中文版的JDK文档无疑是一个巨大的帮助,它能确保开发者准确理解API的用法...

    jdk7 jdk8 jdk9 jdk10 jdk11 jdk12 jdk13 jdk14 (win-64位) 百度网盘下载

    jdk7 jdk8 jdk9 jdk10 jdk11 jdk12 jdk13 jdk14 (win-64位) 资源共享

    window JDK1.5 32位 绿色免安装版,可以安装多个JDK使用

    7. **THIRDPARTYLICENSEREADME.txt**:列出JDK中可能包含的第三方软件的版权和许可信息,确保对所有使用的开源组件的合规性。 8. **LICENSE.rtf**:以RTF格式提供JDK的许可协议,内容与LICENSE文件类似。 **多版本...

    jdk 内存设置jdk内存设置

    在 Windows Server 2003 系统上,使用 JDK5.0,最大可设置为 1478m。 在设置堆大小时,需要考虑多方面的因素,例如操作系统、物理内存、虚拟内存等。典型的堆大小设置为:-Xmx3550m -Xms3550m -Xmn2g -Xss128k。...

Global site tag (gtag.js) - Google Analytics