Java 中可以同步抽象方法吗?


抽象方法是没有方法体的方法。它只包含一个方法签名,后面跟着一个分号,并在其前面有一个**抽象**关键字。

public abstract myMethod();

要使用抽象方法,您需要通过扩展其类来继承它,并为其提供实现(方法体)。如果一个类包含至少一个抽象方法,则必须将其声明为抽象类。

示例

 现场演示

import java.io.IOException;
abstract class MyClass {
   public abstract void display();
}
public class AbstractClassExample extends MyClass{
   public void display(){
      System.out.println("subclass implementation of the display method");
   }
   public static void main(String args[]) {
      new AbstractClassExample().display();
   }
}

输出

subclass implementation of the display method

同步 - 如果一个进程有多个线程同时独立运行(多线程),并且如果所有线程都试图访问相同的资源,就会出现问题。

为了解决这个问题,Java 提供了同步块/同步方法。如果您在同步块或同步方法内定义了一个资源(变量/对象/数组),如果一个线程正在使用/访问它,则不允许其他线程访问。

synchronized (Lock1) {
   System.out.println("Thread 1: Holding lock 1...");
}

同步抽象方法

不,您不能在 Java 中同步抽象方法。当您同步一个方法时,这意味着您正在同步其中的代码,即当一个线程正在访问同步方法的代码时,不允许其他线程访问它。因此,同步抽象方法没有意义,如果您仍然尝试这样做,将生成编译时错误。

示例

import java.io.IOException;
public abstract class MyClass {
   public abstract synchronized void display();
}

输出

编译时错误 -

MyClass.java:3: error: illegal combination of modifiers: abstract and synchronized
   public abstract synchronized void display();
                                     ^
1 error

更新于: 2019年9月10日

781 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告