从Java TreeMap 获取同步地图
TreeMap是Java集合框架的一部分。 Java TreeMap 包含基于键的值。它实现了 NavigableMap 接口并扩展 AbstractMap 类。它提供了一种按排序顺序存储键值对的有效方法。 Java TreeMap 仅包含唯一元素。它不能有一个空键,但可以有多个空值。 TreeMap 维护元素的升序。同步 意味着控制多个线程对任何共享资源的访问。同步资源一次只能被一个线程访问。 Java TreeMap 不是同步的,我们必须显式同步它才能在多线程环境中使用它。
TreeMap 可以使用Collections.synchronizedMap()进行同步 方法。 Collections 类的synchronizedMap()方法将必须同步的 Map 作为参数并返回线程安全的同步 Map。 Java.util.Collections类的synchronizedMap()方法用于返回由指定映射支持的同步(线程安全)映射。为了保证串行访问,对支持映射的所有访问都通过返回的映射完成是至关重要的。
句法:
public static Map synchronizedMap(Map m)
参数:此方法将地图作为要“包装”在同步地图中的参数。
返回值:此方法返回指定地图的同步视图。
执行:
例子
Java
// Java program to demonstrate
// synchronization of TreeMap
// Importing all classes from
// java.util package
import java.util.*;
// Class
public class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Try block to check if any exception occurs
try {
// Step1: Creating a TreeMap object
// Declaring object of string type
TreeMap treeMap
= new TreeMap();
// Step2: Adding elements into the above Map
// Custom inputs
treeMap.put("1", "Welcome");
treeMap.put("2", "To");
treeMap.put("3", "Geeks");
treeMap.put("4", "For");
treeMap.put("5", "Geeks");
// Printing all elements of the above Map object
System.out.println("Map : " + treeMap);
// Synchronizing the map using
// synchronizedMap() method of Collection class
Map sMap
= Collections.synchronizedMap(treeMap);
// Printing the Collection
System.out.println("Synchronized map is : "
+ sMap);
}
// Catch block to handle the exceptions
catch (IllegalArgumentException e) {
// Displaying and printing the exception
System.out.println("Exception thrown : " + e);
}
}
}
输出
Map : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks}
Synchronized map is : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks}