java - 当我们有更简单的方法时为什么要使用同步关键字

标签 java

使用变量,我们可以确保任何时候只有一个方法正在执行,请参阅下面建议的代码。我想知道为什么我们要使用同步?

public class Test {
private static boolean lock = false;

public void testMethod() {
    if(lock){
        System.out.println("Method run is in progress");
        return;
    }
    lock=true;
    try{
        System.out.println("Doing some stuffs here");
    }
    catch(Exception e){

    }
    finally{
       lock=false;
    }
    return;
}
} 

最佳答案

事情没那么简单。

你的方案的一个简单的反例:如果两个线程同时遇到你的函数testMethod,那么两个线程都可以将lock视为false.

这同样适用于 finally block 中的代码。

关于java - 当我们有更简单的方法时为什么要使用同步关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34511842/

相关文章:

java - 如何在 JSP 表达式语言中进行 HTML 编码?

java - 在 View 中打开 session 与@Transactional

java - 在 Android 中隐藏、显示和聚焦 editText

java - 双向 OneToOne 被多次加载

java - 将服务器时间设置为本地时间

java - Kubernetes 和 Java : Retrieving Pod IPs behind Service

java - 如何从java中的Array类类型对象中检索值?

java - Android:带有事件的日历

java - 如何从 Youtube Api 获取 channel ID?它显示此错误 "JSONException: No value for channelId"

java - 为什么我的方法不能正常工作?