我是Java的新手,正在尝试学习同步的概念。我在Java Tutorial Oracle中看到了这个引用。我正在努力通过短语“类对象”来理解它们所指的是什么。什么是类对象?
您可能想知道静态同步方法会发生什么 调用,因为静态方法与类关联,而不是 宾语。在这种情况下,线程获取内部锁 与类关联的类对象。从而访问类的静态 字段由锁定控制,该锁定与任何锁定不同 班级的实例。
答案 0 :(得分:4)
Class<T>
本身就是一个类。您可以通过以下方式获取类实例:
String.class
(如果您静态了解该类),这是Class<String>
someInstance.getClass()
(如果您需要实例的具体类),这是Class<? extends SomeInstance>
的实例,假设someInstance
是SomeInstance
类型的引用(绑定是因为它可能是SomeInstance
)的子类。答案 1 :(得分:1)
Class
是Java中的实际类。存在类型Class
的对象。对于每个关键字 - class
将关联一个类型为Class
的对象(至少我认为 - 这是有意义的,并使该块有意义。)
我认为这种行为是有道理的 - 当你同步一个静态方法时,你肯定无法与任何对象进行同步。
可以说synchronized static
是反模式。它是程序范围的瓶颈和可扩展性的诅咒。假设您的程序在1 GB服务器上运行良好。如果要将其调整为具有256x端口和网络容量以及8x内核的8 GB服务器,那么<em>无法 来扩展同步静态代码。当然,你不能创建另一个对象。我认为唯一的解决方案是使用它来启动另一个进程和另一个JVM。