0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Synchronizeとは

Last updated at Posted at 2023-07-21

Synchronize

Javaのマルチスレッド環境でスレッドセーフ(Thread-safe)な動作を実現するための機能
スレッドが同時に共有されるリソースにアクセスするとき
→スレッドの実行順序や同時実行による競合状態を制御するために使用

具体的な状況の例

Javaでは、複数のスレッドが同時に共有データにアクセスすることがある

複数のスレッドが同時にデータを変更しようとするとデータの整合性が損なわれたり、競合状態が発生したりすることがある

このような競合状態を防ぐために使用


synchronizeキーワードを使用
→メソッドやブロックをsynchronizedできる

  • synchronizeされたメソッドやブロックは、同時に1つのスレッドしか実行不可
  • スレッドがsynchronizedされた領域に入ると、他のスレッドはその領域の終了を待つことになる

例 Javaのsynchronize

public class Counter {
    private int count;

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

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

Counter クラスの increment() メソッドと decrement() メソッドは、キーワードによってsynchronizedされている

複数のスレッドが同時に increment() や decrement() メソッドを呼び出しても、互いに干渉することなく正しくカウンターを操作できる

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?