java - 我们如何确保在任何时候只有类的静态方法和非静态方法之一被调用?

标签 java multithreading synchronization thread-safety

给定一个具有静态方法和非静态实例方法的类, 您如何确保在任何时间点仅调用其中一个方法?

示例: ——————

public class DoMath{


public static int getSum(){
//Sum
}

public int getSub(){
//Subtract
}

}

现在您需要确保在任何一个时间点,仅调用其中一个方法。

最佳答案

这应该可以。

public class DoMath{
    public static synchronized int getSum(){
        //Sum
    }

    public int getSub(){
        synchronized(DoMath.class) {
            //Subtract
        }
    }
}

说明:静态同步方法隐式同步声明该方法的类的Class对象。

关于java - 我们如何确保在任何时候只有类的静态方法和非静态方法之一被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223573/

相关文章:

c++ - OpenCL:只关心线程全局 ID 时的理想 block 数?

java - 为什么我们应该在 try block 中使用 wait() 方法?我们可以在 try block 之外使用 wait() 方法吗?

elasticsearch - Elasticsearch CRUD 需要刷新吗?

java - Spring AOP中拦截log4j2的ThreadContext around Advice

java - 为缓存构建一个对象, "asynchronously"(有点),用Java : howto?

c - 试图弄清楚 fork() 在这种情况下是如何工作的,但我似乎不明白答案是如何实现的

Java 线程同时递增和递减 int

mysql - 同步数据的最佳方式: MySQL -> SQL Server

java - c3p0 连接池 saveorupdate with blob data

java - 在命令行中更改 Swing L&F 效果不佳