`

intern的妙用

    博客分类:
  • J2SE
 
阅读更多

要根据一个字符串实现同步

 

public void test(TaskInfo ti) {
    synchronized (ti.getId()){
        System.out.println("1111111111");
        System.out.println("2222222222");
    }
}

 

本意只想这个对象的id一样,就锁住代码。但是事实并不是这样,因为这个TaskInfo对象并不是一个,所以获取出来的id虽然值相等,但是这里并不是一个对象,这个类似于new String("1") != new String("1")

 

改造一下代码

public void test(TaskInfo ti) {
    synchronized (ti.getId().intern()){
        System.out.println("1111111111");
        System.out.println("2222222222");
    }
}

 

这样这个同步块就认为这个字符串是一个对象了,也就实现了根据相同的字符串实现同步块。

 

intern这个方法不是很常用,上网查了一下这个方法

 

当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。 这也就不难理解了即使不是同一个对象里的id,只要值相同,就认为这两个字符串相同。

分享到:
评论

相关推荐

    intern project

    在“intern project”这个项目中,我们可以看到涉及到了一些核心的IT技术,主要集中在Java、Spring框架以及Ajax方面。下面将分别对这三个关键知识点进行详细阐述。 首先,Java是一种广泛使用的面向对象的编程语言,...

    WM_Intern_Intern_源码

    2. **C++编程**:由于出现了".h"头文件,很可能项目是用C++进行的,因此涵盖了C++的基本语法、面向对象编程、模板、异常处理等概念。 3. **软件设计原则**:实习生可能需要遵循良好的软件设计原则,如单一职责原则...

    网络互联与intern技术课件

    【网络互联与Internet技术】是信息技术领域中的一个重要分支,它主要关注如何将各种类型的网络连接在一起,以便实现数据和信息的高效传输。本课程中,我们将会深入探讨现代互联网的结构、公用网络以及局域网网络等...

    intern, 面向JavaScript的下一代代码测试.zip

    intern, 面向JavaScript的下一代代码测试 实习生面向人类的软件测试 实习生是一个完整的JavaScript测试系统,用于帮助你编写和运行一致的。高质量的JavaScript库和应用。 它可以被用来测试任何的JavaScript代码。...

    String类的intern、split方法

    String类的intern、split方法 String 类的 intern 方法是一个本地方法,定义如下:public native String intern();该方法返回一个字符串对象的内部化引用,由 String 类维护一个初始为空的字符串的对象池,当 ...

    JavaScript 自动化测试框架 Intern.zip

    JavaScript 自动化测试框架 Intern 是一个强大的工具,用于确保 JavaScript 应用程序的质量和稳定性。在现代软件开发中,测试是不可或缺的一部分,特别是在JavaScript这样的动态语言中,由于其灵活的语法,测试显得...

    深入理解JavaString#intern()内存模型Ja

    在Java编程语言中,`String`类是极其重要的,它提供了许多用于操作字符串的方法,其中之一便是`intern()`。深入理解`String#intern()`方法对于优化内存使用和理解Java的内存模型至关重要。`intern()`方法是一个非常...

    Java String的intern用法解析

    Java String的intern用法解析 Java String的intern方法是Java中一个非常重要的方法,它可以将字符串常量池中的字符串对象返回给我们。今天,我们将深入探究Java String的intern用法解析,了解它的工作原理和应用...

    laravel-intern.sql

    laravel-intern.sql

    关于java String中intern的深入讲解

    Java String 中 intern 的深入讲解 Java String 中的 intern 方法是一个非常重要的概念,它可以将字符串对象存储在字符串常量池中,以便重复使用相同的字符串对象,减少内存的占用。下面我们将深入讲解 Java String...

    C#中字符串优化String.Intern、IsInterned详解

    C#中字符串优化String.Intern、IsInterned详解 C#中字符串优化是指在编程过程中对字符串进行优化,以减少内存占用和提高程序运行效率。在C#中,字符串是一种特殊的数据类型,它既是基元类型又是引用类型。在编译和...

    python字符串Intern机制详解

    Python 字符串的 Intern 机制是一种优化策略,用于提高字符串操作的效率,特别是当处理大量重复字符串时。在 CPython(Python 的默认实现)中,字符串的 Intern 机制基于字符串驻留技术,它确保所有值相同的字符串在...

    深入理解 Java String#intern() 内存模型.docx

    "深入理解 Java String#intern() 内存模型" Java String#intern() 内存模型是 Java 语言中一个重要的概念,.string#intern() 方法是 Java 字符串常量池中一个重要的组件。字符串常量池是一个固定大小的 HashMap,桶...

    my intern project

    在“my intern project”这个标题中,我们可以推断这是一个实习生完成的个人项目。实习生通常会在导师的指导下,选择或被分配一个特定的项目来提升自己的技能,理解实际工作环境中的问题,并应用所学理论知识。这种...

    jdk1.8之后的String.intern()方法内存分析

    关于String.intern()方法,这个问题都被问烂了,有的文章在分析的时候还在用jdk1.7,jdk1.8之后内存模型发生了变化,内存的变化也会影响intern方法的执行,这里有必要写文章分析一下,请大家务必从头开始看,这样...

    intern

    “intern-main”这个文件名可能是该实习项目的主程序或者核心代码库,包含了实习项目的核心内容或者指导材料。对于实习生来说,这个文件可能是他们工作的起点,包含了项目介绍、任务分配、开发环境配置、编程语言和...

    蔚来实习存档_nio-intern.zip

    蔚来实习存档_nio-intern

    700套高级简历模板(解压密码:intern021)

    【标题】"700套高级简历模板(解压密码:intern021)" 提供的是一个包含大量高质量简历模板的资源集合,旨在帮助求职者制作出吸引眼球的个人简历,以提升在竞争激烈的就业市场中的竞争力。解压密码为“intern021”,...

Global site tag (gtag.js) - Google Analytics