JavaのAtomicIntegerの使い方

JavaのAtomicIntegerの使い方

java.util.concurrent.atomic.AtomicIntegerクラスがあります。

処理を同期させたい場合に使用するクラスです。

例えばstream().forEach内でインクリメントすることができたりします。

import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;

public class Atomic {
  public static void main(String[] args) {
    Stream<String> stream = Stream.of("aiu", "eo", "eeee", "eeaa", "ai", "aiu", "a", "aio"); // 文字列長でグルーピングする
    AtomicInteger i = new AtomicInteger();
    stream.forEach(e -> {
      System.out.println(i.getAndIncrement());
    });
  }
}

デフォルトコンストラクタに初期値を設定しますが省略した場合は0となります。

getAndIncrement()メソッドで値を取得してからインクリメントします。結果は以下のようになります。

0
1
2
3
4
5
6
7

デフォルトコンストラクタにint型で値をしていすると、その値のクラスになります。

int型を取得したい場合はget()メソッドを使用します。

import java.util.concurrent.atomic.AtomicInteger;

public class Atomic002 {
  public static void main(String[] args) {
    AtomicInteger i = new AtomicInteger(1);
    System.out.println(i);
    System.out.println(i.get());
    // System.out.println(i + 2); // iはクラスなのでエラーとなる
    System.out.println(i.get() + 2); // i.get()はint型なので足し算が出来る
  }
}

その他AtomicBooleanやAtomicLongなどもありますが基本的にこれらのクラスは同期したい場合に使用するクラス群です。結果は以下のようになります。

1
1
3

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました