Java多线程,同步概念

时间:2016-03-10 20:14:36

标签: java multithreading synchronization

我有一个类有三种方法m1,m2和m3。方法m1,m3是同步的。

创建了三个线程,比如说t1,t2和t3。

这里的问题是 如果t1正在访问m1方法并且同时可以t2访问m3方法? (m1和m3方法都是同步的。)

我没有代码。在我最近的采访中面对这个问题。

1 个答案:

答案 0 :(得分:0)

如果m1和m3都是实例方法而不是静态的:

这取决于t1和t2是否共享同一个类的对象。如果它们共享同一个对象,则t1和t2不能同时调用同步方法。否则,如果t1和t2具有类对象的不同副本,则可以同时调用m1和m3,因为它们是2个不同的对象。

但是,如果m1和m3都是静态的: 没有2个线程可以同时调用它们。这是因为,静态方法在YourClass.class对象上同步,该对象由该类的所有实例共享。因此,多个线程无法同时访问它的同步方法/块。