Java 静态类与普通类的区别

Java 静态类与普通类的区别,java,Java,我是Java新手,正在读同步块的东西。我在其中一条语句中感到困惑,在静态类中,同步使用类实例,而普通类使用当前对象进行锁定 现在,当两个类相同时,唯一的区别是一个类是静态的,另一个是正常的。这是否会对解释做出任何更改 我的下一个问题是,我们可以通过多少种方式实现同步 谢谢这不是关于类,而是关于方法 synchronized方法在实例上同步静态的没有实例,因此同步是在相应的类实例上执行的。它实际上是静态方法与非静态方法 静态方法可以在没有对象的情况下调用(即:nothis),因此它们使用类的对象锁

我是Java新手,正在读同步块的东西。我在其中一条语句中感到困惑,在静态类中,同步使用类实例,而普通类使用当前对象进行锁定

现在,当两个类相同时,唯一的区别是一个类是静态的,另一个是正常的。这是否会对解释做出任何更改

我的下一个问题是,我们可以通过多少种方式实现同步

谢谢

这不是关于类,而是关于方法


synchronized
方法在实例上同步<代码>静态的没有实例,因此同步是在相应的
实例上执行的。

它实际上是静态方法与非静态方法

静态方法可以在没有对象的情况下调用(即:no
this
),因此它们使用类的对象锁


非静态方法使用对象的(
)锁。

同步静态方法时,锁定在“类”实例本身上完成。这意味着,如果执行了一个静态同步方法,则其他静态同步方法都不能执行。

当一个方法被声明为已同步时,这意味着一次只能对该方法执行一个调用。当一个类有多个synchronized时,这将创建一个synchronized API,这意味着一次只能对所有这些方法进行一次调用

静态方法不是实例方法,这意味着您不是从对象实例调用它,而是从类本身调用它


在并发环境中,当有各种对象从特定对象实例调用方法时,这些方法需要同步,以确保一次只发生一个。您混淆了类、静态、实例的概念以及同步块的工作方式

类类似于蓝图,而该类的实例类似于从蓝图构建房屋。您可以有许多房屋是从同一个蓝图构建的,就像您可以有一个类的许多实例一样。一个类可以有实例方法(非静态的,如果您愿意,可以是普通的)和静态方法。就像房子(蓝图的实现)可以有一个光开关函数(方法),它只有在实际房子存在时才有意义,同样,非静态(实例)方法只有在创建类的实例时才可用。另一方面,设想房子的蓝图有一个按钮,按下该按钮将计算房子的面积。这是一个可以直接在blueprint上工作的函数,但也可以在house上使用,就像静态方法可以用于(非实例化的)类,但也可以在类的实例中使用一样


同步方法在使用时会锁定使用它们的对象。如果您有一个静态方法(在非实例化类中或从类的实例中),它将获得类上的锁,因为静态方法与类(而不是实例)相关。如果调用动态方法(只能从类的实例中调用),它将锁定实例,而不是类。

如果您可以给出以下示例:现在,当两个类相同时,唯一的区别是一个类是静态的,另一个是正常的-回答你的问题会更容易,而不是深入到基础知识中去。没有这样的例子,我只是在读一本书。。