论坛首页 入门技术论坛

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

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

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics