在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("display方法的子类实现");
}
public static void main(String args[]) {
new AbstractClassExample().display();
}
}输出结果
display方法的子类实现
同步(synchronized)-如果一个进程有多个线程同时独立运行(多线程),并且所有线程都试图访问同一资源,则会发生问题。
为了解决这个问题,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