【发布时间】:2016-02-16 23:20:36
【问题描述】:
我是 Java 新手,正在尝试学习同步的概念。我从 Java Tutorial Oracle 中看到了这句话。我正在努力理解他们所说的“类对象”一词所指的内容。类对象到底是什么?
你可能想知道当一个静态同步方法是 调用,因为静态方法与类相关联,而不是 目的。在这种情况下,线程为 与类关联的类对象。从而访问类的静态 字段由与任何锁不同的锁控制 类的实例。
【问题讨论】:
标签: java multithreading
我是 Java 新手,正在尝试学习同步的概念。我从 Java Tutorial Oracle 中看到了这句话。我正在努力理解他们所说的“类对象”一词所指的内容。类对象到底是什么?
你可能想知道当一个静态同步方法是 调用,因为静态方法与类相关联,而不是 目的。在这种情况下,线程为 与类关联的类对象。从而访问类的静态 字段由与任何锁不同的锁控制 类的实例。
【问题讨论】:
标签: java multithreading
Class<T> 本身就是一个类。您可以通过以下方式获取类实例:
String.class(如果你静态知道类),它是Class<String> 的一个实例
someInstance.getClass()(如果你想要一个实例的具体类),它是Class<? extends SomeInstance>的一个实例,假设someInstance是一个SomeInstance类型的引用(绑定是因为它可能是一个SomeInstance 的子类。【讨论】:
Class 是 Java 中的一个实际类。存在Class 类型的对象。每个关键字-class 将关联一个Class 类型的对象(至少我假设-这是有道理的并且使该块有意义)。
我认为这种行为是有道理的——当你同步一个静态方法时,你当然不能与任何对象同步。
可以说synchronized static 是一种反模式。这是一个程序范围的瓶颈和可扩展性的诅咒。假设您的程序在 1 GB 服务器上运行良好。如果您想将其调整为具有 256 倍端口和网络容量以及 8 倍内核的 8 GB 服务器,则无法扩展同步的静态代码。当然,您不能创建另一个对象。我认为唯一的解决方案是启动另一个进程和另一个 JVM。
【讨论】: