Javaのマルチスレッドロックの使い方は何ですか?

Javaでは、複数スレッドのロックメカニズムを実装するために、synchronizedキーワードまたはReentrantLockクラスを使用することができます。

  1. synchronizedキーワードを使用する:
public class MyObject {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized void decrement() {
        count--;
    }
}

上記の例では、increment()メソッドとdecrement()メソッドにsynchronizedキーワードを使用しており、これによりこれらのメソッドを呼び出す際には、MyObjectオブジェクトがロックされ、同時にこれらのメソッドにアクセスできるスレッドは1つしかないことが確認されます。

  1. ReentrantLockクラスを使用する:
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class MyObject {
    private int count = 0;
    private Lock lock = new ReentrantLock();

    public void increment() {
        lock.lock();
        try {
            count++;
        } finally {
            lock.unlock();
        }
    }

    public void decrement() {
        lock.lock();
        try {
            count--;
        } finally {
            lock.unlock();
        }
    }
}

上記の例では、ReentrantLockクラスを使用してロックオブジェクトlockを作成し、increment()メソッドとdecrement()メソッドでlock()メソッドを使用してロックをかけ、unlock()メソッドを使用してロックを解除しています。これにより、ロックの取得と解放をより柔軟に制御できます。

bannerAds