两个synchornized代码块使用相同的对象锁会导致阻塞吗
时间: 2023-05-15 22:05:37 浏览: 67
如果两个 synchronized 代码块使用相同的对象锁,则会导致阻塞。因为当一个线程进入 synchronized 代码块时,它会获取对象锁,其他线程必须等待该线程释放锁才能进入 synchronized 代码块。如果另一个线程也想要进入使用相同对象锁的 synchronized 代码块,它将被阻塞,直到第一个线程释放锁。
相关问题
synchornized代码块
可以用来实现线程同步,保证多个线程对共享资源的访问互斥。在 synchronized 代码块中,只有一个线程可以执行,其他线程必须等待当前线程执行完毕才能进入 synchronized 代码块。以下是 synchronized 代码块的示例:
synchronized (obj) {
// 需要同步的代码块
}
其中,obj 是一个对象锁,用来保证同步的唯一性。
一个函数加两个synchornized锁效率高还是整个函数加synchornized效率高
这个问题的答案取决于具体情况。如果两个锁的范围不重叠,那么使用两个锁可能会提高效率,因为不同的线程可以同时访问不同的锁,从而减少了竞争。但是,如果两个锁的范围重叠,那么使用一个锁可能会更高效,因为不同的线程必须等待对方释放锁才能继续执行。因此,需要根据具体情况来选择使用哪种锁的方式。