JAVA如何为同一代码段提供两个锁?

JAVA如何为同一代码段提供两个锁?,java,locking,synchronized,Java,Locking,Synchronized,我的代码中有两个锁——lock1和lock2,我想给出一个代码段,这两个锁如下: synchronized(lock1 || lock2) { // code } 这意味着,如果lock1或lock2正忙,此代码段将等待,直到两个锁都空闲。我该怎么做?谢谢。您可以将它们嵌套: synchronized (lock1) { synchronized (lock2) { //code } } 有关嵌套锁定的可能风险,请参阅。您可能想补充一点,这会带来巨大的

我的代码中有两个锁——lock1和lock2,我想给出一个代码段,这两个锁如下:

synchronized(lock1 || lock2) {
    // code
}
这意味着,如果lock1或lock2正忙,此代码段将等待,直到两个锁都空闲。我该怎么做?谢谢。

您可以将它们嵌套:

synchronized (lock1) {
    synchronized (lock2) {
        //code
    }
}

有关嵌套锁定的可能风险,请参阅。

您可能想补充一点,这会带来巨大的死锁风险,锁定顺序非常重要,而且这个问题似乎是一个类型问题