【发布时间】:2017-03-08 00:31:19
【问题描述】:
每个 java 对象都有一个内置的锁。 因此,如果多个线程之一想要调用同步方法,它会获取对象的锁。
假设我们有一个对象和两个线程,t1和t2。
t1 线程请求对象的锁以调用同步方法object.methodA()。同时t2要求对象的锁调用同步方法object.methodB()。
这可以吗?
两个线程有可能为两种不同的方法获取锁吗? (想象一个理想的场景,methodA() 和 methodB() 不对同一个对象字段进行操作)
如果不是,您是在告诉我,当一个线程获得锁时,其他线程都无法调用其他同步方法,即使是那些不花费诸如写入对象字段等问题的方法...
【问题讨论】:
-
@NathanHughes 我认为这是真的!
标签: java concurrency synchronization locking