当一个线程获得锁定时,其他人能够调用其他方法吗?

时间:2016-10-25 20:04:38

标签: java concurrency synchronization locking

每个java对象都有一个内置锁。 因此,如果许多线程中的一个想要调用同步方法,它将获取对象的锁定。

因此,我们假设我们有一个对象和两个主题 t1 t2

t1线程要求对象的锁调用synchronized参数object.methodA()。同时t2要求对象的锁调用同步方法object.methodB()

可以这样做吗?

两个线程是否有可能获得两种不同方法的锁定? (想象一下理想情况,其中methodA()和methodB()不对相同的对象字段进行操作)

如果没有,你告诉我,当一个线程获得锁定时,其他人都不能调用其他同步的方法,即使那些没有花费成本问题的人,比如写入对象的字段等......

1 个答案:

答案 0 :(得分:1)

制作方法synchronized只是控制访问权限的方法之一。多个线程不能同时调用单个对象的synchronized方法(前提是它们都是相同的静态或非静态),所以如果你需要更高级的控制,还有很多其他的并发机制,比如为ReadWriteLock