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("macOS"); System.out.println(list); // 結果:[Windows, Linux, macOS] } }