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