江明涛的博客
Java synchronized 的使用方法有哪些?
Java synchronized 的使用方法有哪些?

Java synchronized 的使用方法有哪些?

Java中的synchronized关键字用于实现多线程同步,保证在同一时间只有一个线程访问某个共享资源。下面将介绍一些synchronized的使用方法。

1. 同步方法

可以使用synchronized关键字修饰方法,将方法声明为同步方法。

public synchronized void method() {
    // 这里是需要同步的代码块
}

当一个线程访问该方法时,其他线程将被阻塞,直到当前线程执行完毕。

2. 同步代码块

除了同步方法,还可以使用synchronized关键字修饰代码块,将需要同步的代码放在同步代码块中。

public void method() {
    synchronized (this) {
        // 这里是需要同步的代码块
    }
}

只有一个线程可以同时执行该代码块。同步代码块的锁对象可以是this,也可以是其他对象。

3. 静态同步方法

synchronized关键字还可以用于修饰静态方法,用来实现对静态资源的同步。

public static synchronized void staticMethod() {
    // 这里是需要同步的代码块
}

当一个线程访问该静态方法时,其他线程也将被阻塞,直到当前线程执行完毕。

4. 同步锁对象

除了使用this作为锁对象,还可以使用其他对象作为锁对象,来实现更细粒度的同步。

private Object lock = new Object();
public void method() {
    synchronized (lock) {
        // 这里是需要同步的代码块
    }
}

使用一个私有对象作为锁对象,可以避免使用this作为锁对象可能带来的风险。

以上是一些关于Java synchronized的使用方法,通过修饰方法、代码块,以及静态方法,可以实现对共享资源的同步控制。