【发布时间】:2023-04-07 19:15:01
【问题描述】:
我有一个同步方法,我想使用同一个类的两个不同实例来调用它。我无法理解这里到底会发生什么。如果有办法强制这些调用一个接一个地执行?
Code
public class A1 {
public synchronized void m1(){
try{
Thread.sleep(5000);
}catch(Exception e){
}
}
public static void main(String[] args) {
A1 o1 = new A1();
A1 o2 = new A1();
o1.m1();
o2.m1();
}
}
【问题讨论】:
-
这里只有一个线程,所以这两个调用会一个接一个地执行。你似乎对
synchronized很困惑。 -
是的,我是。实际上我刚刚开始学习这个,我正在寻找解决方法。但是谢谢你的回答。它澄清了很多事情。
-
@Sweeper 你能解释一下为什么只有一个线程吗?对不起,如果我的问题听起来很愚蠢。
-
因为您没有在代码中创建任何新线程。你认为
synchronized会创建新线程吗? -
哦,是的。通过使用
synchronized,我们确保线程获得了方法上的锁,并且只有在完成后才释放它。
标签: java multithreading synchronized