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
廣告