Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

synchronizedList/synchronizedMap/synchronizedSetメソッド

コレクションをマルチスレッド環境でも利用できるようにする – synchronizedList/synchronizedMap/synchronizedSetメソッド
public static List synchronizedList(List list)
public static Map synchronizedMap(Map m)
public static Set synchronizedSet(Set s)
T、K、V:要素型
list、m、s:変換対象のコレクション

コレクションフレームワークで提供されている実装クラスのほとんどは、デフォルトでは、マルチスレッド環境に対応していません。これは、シングルスレッド環境でマルチスレッドのための対応(=排他処理)を施すのは無駄なことであり、パフォーマンスが劣化する原因にもなるためです。
そこで、コレクションフレームワークの実装クラスをマルチスレッド環境で利用する場合には、synchronizedList/synchronizedMap/synchronizedSetメソッドを介して、マルチスレッド対応のリスト/マップ/セットに変換しなければなりません。このようなコレクションのことを同期化コレクションと言います。
例えば以下は、リスト(ArrayList)を同期化コレクションに変換した例です。

CollSynchronized.java(抜粋)

package com.example.mynavi.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollSynchronized {

  public static void main(String[] args) {
    Listlist = Collections.synchronizedList(new ArrayList<>());
    list.add("Windows");
    list.add("Linux");
    list.add("OS X");
    System.out.println(list);	// 結果:[Windows, Linux, OS X]
  }
}
コレクションフレームワーク
コレクションフレームワーク
コレクションを初期化する
synchronizedList/synchronizedMap/synchronizedSetメソッド
ArrayListクラス
asListメソッド
toArrayメソッド
LinkedList
HashMap
TreeMap
NavigableMap
HashSet
ArrayDeque

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職