我一直在尝试java中多线程的不同行为。如果我在类中使用同步静态和非静态方法。 我所理解的是,
- >如果线程进入同步方法,则线程获取对象的锁定,直到执行方法。
- >如果线程进入静态同步方法,则线程获取类的锁而不是对象。
Real confusion部分是输出??。
Payment
答案 0 :(得分:2)
同步static
方法获取Class
对象X
上的锁定,该对象表示定义方法的类。在这种情况下,synchronized
关键字原则上只用于static
方法之间的同步。
而同步实例(非static
)方法会锁定调用该方法的当前对象Y
。
因此,同步static
方法和同步实例方法仍然可以交错,因为它们会锁定两个不同的对象。
答案 1 :(得分:1)