短语“类对象”在线程同步的上下文中引用了什么?

时间:2016-02-16 23:20:36

标签: java multithreading

我是Java的新手,正在尝试学习同步的概念。我在Java Tutorial Oracle中看到了这个引用。我正在努力通过短语“类对象”来理解它们所指的是什么。什么是类对象?

  

您可能想知道静态同步方法会发生什么   调用,因为静态方法与类关联,而不是   宾语。在这种情况下,线程获取内部锁   与类关联的类对象。从而访问类的静态   字段由锁定控制,该锁定与任何锁定不同   班级的实例。

2 个答案:

答案 0 :(得分:4)

Class<T>本身就是一个类。您可以通过以下方式获取类实例:

  • 致电,例如String.class(如果您静态了解该类),这是Class<String>
  • 的一个实例
  • 调用someInstance.getClass()(如果您需要实例的具体类),这是Class<? extends SomeInstance>的实例,假设someInstanceSomeInstance类型的引用(绑定是因为它可能是SomeInstance)的子类。

答案 1 :(得分:1)

Class是Java中的实际类。存在类型Class的对象。对于每个关键字 - class将关联一个类型为Class的对象(至少我认为 - 这是有意义的,并使该块有意义。)

我认为这种行为是有道理的 - 当你同步一个静态方法时,你肯定无法与任何对象进行同步。

可以说synchronized static是反模式。它是程序范围的瓶颈和可扩展性的诅咒。假设您的程序在1 GB服务器上运行良好。如果要将其调整为具有256x端口和网络容量以及8x内核的8 GB服务器,那么<​​em>无法 来扩展同步静态代码。当然,你不能创建另一个对象。我认为唯一的解决方案是使用它来启动另一个进程和另一个JVM。