在Java中,可以使用synchronized关键字来创建锁。每个synchronized锁都有一个唯一的所属对象。当一个线程访问一个对象的synchronized块时,其他线程将被阻塞,直到该线程释放锁。
不同的锁可以相互覆盖。例如,可以使用不同的对象来创建锁,这些对象可以相互覆盖。来看一下下面的示例代码:
public class LockExample { private Object lock1 = new Object(); private Object lock2 = new Object();
public void method1() {
synchronized (lock1) {
// do something
}
}
public void method2() {
synchronized (lock2) {
// do something
}
}
public void method3() {
synchronized (lock1) {
synchronized (lock2) {
// do something
}
}
}
}
在这个示例中,锁lock1和lock2分别用于method1和method2,它们是不同的锁。在method3中,两个锁都被使用,并且可以相互覆盖。这种方式被称为嵌套锁。
也可以使用类级别的锁,它可以覆盖所有对象级别锁。来看一下下面的示例:
public class LockExample { public static synchronized void method1() { // do something }
public static synchronized void method2() {
// do something
}
}
在这个示例中,使用了类级别的锁来包含method1和method2,这意味着它们将相互覆盖。
下一篇:不同的SVG路径组成一部分段落