`
programmer
  • 浏览: 76430 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

多个线程并发装载一个类,结果是什么?

阅读更多
JVM规范里有规定,同一个命名空间(同一个类装载器装载的类),那么类的类型对象(类型数据)在堆里只一个一个。当多个线程同时装载一个类,结果又是什么样的呢?
假如有一个A.class 类(web应用),当用到它的时候,那么application server 指定一个类装载器来装载这个类。
类装载器简单的装载逻辑:
1.看看A.class 类有没有被装载,如果没有被装载那么进行装载,然后连接,初始化,在堆里创建一个Class 类型数据对象(A的类型对象,不是A的实例对象)。
2.如果被装载。那么就不需要执行 连接,初始化,也不需要在堆里创建一个Class 类型数据对象。
我的问题是:
如果是两个两个线程同时并发来使用A.class类,会不会导致A.class类型对象(类型数据)在堆里有两份呢?
除非JVM有某种机制来解决并发装载一个类的问题。

分享到:
评论

相关推荐

    多线程单例模式并发访问

    当多个线程同时访问相同的资源(共享变量)时,如果没有正确的同步机制,可能会导致不可预测的结果。 - **原因**:存在共享数据,并且存在对共享数据的多条操作路径,这些路径还可能被其他线程干扰。 - **解决办法*...

    jvm类装载器原理

    特别地,JVM有一个内置的根装载器(bootstrap ClassLoader),它加载的是Java核心库中的类,被认为是安全且可信的。对于非预定义的类,就需要用户自定义的类装载器来完成加载。 自定义类装载器的应用广泛,例如在...

    Java并发编程-并发编程知识点总结.docx

    - **线程安全**:如果一段代码或对象在多线程环境中被多个线程并发访问时,能够保证正确的执行结果,即不会因为线程间的竞争导致数据不一致或程序错误,则这段代码或对象称为线程安全的。 - **`Vector`**:`Vector`...

    并发设计模式

    1. **静态内部类**:利用Java的类加载机制来保证初始化实例时只有一个线程执行,因此实例化是线程安全的,同时也实现了懒加载。 ```java public class Singleton { private Singleton() {} private static ...

    最新java面试题及答案

    答案是,线程安全是指在多个线程访问同一个对象时,不需要考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可预测。 14. ...

    IBM javacore 线程分析工具

    javacore是IBM J9 JVM生成的一种日志文件,包含了在特定时间点虚拟机的状态信息,包括线程、堆内存、类装载信息等。当应用程序遇到性能问题或异常时,生成的javacore文件能帮助我们定位问题所在。 IBM的线程分析...

    SERVLET基本原理

    1.装载阶段:在这个阶段,SERVLET 容器会装载 SERVLET 类,并创建一个 SERVLET 实例。 2.初始化阶段:在这个阶段,SERVLET 容器会调用 SERVLET 的 init() 方法,以完成 SERVLET 的初始化工作。 3.服务阶段:在这个...

    p156 - p191 操作系统进程和线程管理

    线程是进程中的一个执行流程,每个线程都共享同一个进程的资源。线程的出现是为了提高系统的并发性和响应性。 线程的特点 * 线程是轻量级的进程 * 线程之间可以共享同一个进程的资源 * 线程的切换速度比进程快得多...

    Loader异步装载(有demo)

    android 3.0 开始引进。 让Activity/fragment 异步加载数据,变得简单。... Loader对于并发,可以用过Loader管理器统一管理,所以更适合批量处理多个异步任务的处理(当然内部仍然是多线程)。 Loader异步装载(有demo)

    Java四大核心技术思想详解.doc

    线程允许程序同时执行多个任务,提高了程序的响应速度和执行效率。Java中的同步机制,如synchronized关键字、wait()和notify()方法,用于控制线程间的通信和协作,防止数据竞争问题。 综上所述,理解Java虚拟机的...

    JAVA深度历险

    还有可能是线程并发与多线程编程,Java提供了丰富的并发工具类,如synchronized、volatile、ThreadLocal、Lock接口等,以及并发容器如ConcurrentHashMap、BlockingQueue等。理解这些工具的使用和背后的原理,能够...

    01 设计模式之单例模式.pdf

    懒汉式的主要问题在于需要处理多线程同步问题,因为在多线程环境下,多个线程可能会同时判断实例尚未创建,然后都尝试创建实例。 3. 双重检查锁定(Double-Checked Locking) 双重检查锁定是一种优化懒汉式单例模式...

    最新java面试题(基础部分)

    内存溢出可能是由于PermGen Space程序中使用了大量jar或class,导致Java虚拟机装载类空间不够,或者是Java Heap Space Java虚拟机创建了太多的对象,或者是unable to create new native Thread JVM占用了太多内存...

    深入Java虚拟机

    Java虚拟机(JVM)是Java程序运行的核心,它为开发者提供了一个跨平台的执行环境。深入理解Java虚拟机对于优化代码性能、排查问题以及提升编程能力至关重要。本篇文章将详细探讨Java虚拟机的类装载机制、原理以及其...

    java考试题.pdf

    在Java中,负责并发管理的机制是多线程(D),它允许程序同时执行多个任务,提高了程序的效率。多线程是Java语言的一个重要特性,通过Thread类或实现Runnable接口可以创建和管理线程。 在变量声明和赋值方面,布尔...

    HrBasicFromTo2_码垛程序_

    总的来说,这个“HrBasicFromTo2_码垛程序_”项目涵盖了自动化控制、算法设计、数据管理、并发编程等多个IT领域的知识点,是实际工业应用中的一个重要示例。理解和掌握这些内容对于提升在物流自动化、工业4.0等相关...

    【面试资料】-(机构内训资料)JVM执行子系统.zip

    JVM执行子系统是JVM中的一个重要模块,它涉及到程序的启动、执行、优化等多个层面。以下是对JVM执行子系统的详细讲解: 1. 类加载机制: JVM执行子系统首先涉及到的是类加载过程,包括加载、验证、准备、解析和...

    后端开发基础知识整理JAVA、JVM、操作系统、网络、设计模式、mysql、redis、多线程、spring、springboo

    - **伪共享问题**:多个处理器缓存同一数据块导致性能下降。 - **软中断**:由软件产生的中断信号。 - **分段分页问题与解决**:分段解决了程序逻辑地址与物理地址的映射,分页则解决了内存碎片问题。 - **并行与...

Global site tag (gtag.js) - Google Analytics