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 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告