在Java中,synchronized
关键字可以用于同步代码块或方法。当多个线程访问共享资源时,synchronized
关键字可以确保同一时刻只有一个线程能够执行该代码块或方法。
对于synchronized
块,它可以包含一个或多个对象。当使用一个对象作为锁时,只有一个线程可以执行该synchronized
块。如果有多个对象作为锁,那么多个线程可以同时执行该synchronized
块,因为它们使用的是不同的锁。
例如,以下代码示例展示了一个包含多个对象的synchronized
块:
public class MyClass {
private final Object lock1 = new Object();
private final Object lock2 = new Object();
public void myMethod() {
synchronized (lock1) {
// Some code here
}
synchronized (lock2) {
// Some other code here
}
}
}
在这个示例中,myMethod()
方法包含两个synchronized
块,每个块都使用不同的锁对象。因此,在同一时刻,多个线程可以同时执行这两个synchronized
块。
总之,synchronized
块可以包含一个或多个对象,取决于开发人员的需求。如果需要确保同一时刻只有一个线程能够执行某个代码块或方法,可以使用单个锁对象。如果需要允许多个线程同时执行某个代码块或方法,可以使用多个锁对象。
领取专属 10元无门槛券
手把手带您无忧上云