【发布时间】:2015-06-03 20:20:26
【问题描述】:
关于内在锁和同步的 Oracle Java 文档说:
你可能想知道当一个静态同步方法是 调用,因为静态方法与类相关联,而不是 目的。在这种情况下,线程为 与类关联的类对象。从而访问类的静态 字段由不同于任何锁的锁控制 类的实例。
我没有完全理解Class object 的概念。在研究了一些在线内容后,我了解到:
类对象是一种描述对象类的元对象,例如名称、包等。
我的问题是:
- 什么时候创建的?
- 是否在某个时间点收集垃圾?
- 由于是同步静态方法使用的,是不是意味着每个JVM只有一个Class对象的实例?
有一个类似的问题what is Class Object(java.lang.class) in java。但它没有回答我的问题。
[更新]
manouti提供的答案的评论部分添加了一个新问题,因为他提到Class对象可以有多个实例:
- 如果存在多个 Class 对象实例,是否有可能多个线程同时访问静态同步方法?
【问题讨论】:
-
你不能有 2 个加载的同一个类对象的实例
标签: java multithreading class synchronized