當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Collections synchronizedNavigableMap()用法及代碼示例


Java Collections 類的 synchronizedNavigableMap() 方法用於獲取由指定的可導航映射支持的同步(線程安全)可導航映射。

用法

以下是 synchronizedNavigableMap() 方法的聲明:

public static <K,V> NavigableMap<K,V> synchronizedNavigableMap(NavigableMap<K,V> m)

參數

參數 描述 必需/可選
m 它是一個可導航Map,它將被包裝在一個同步的可導航Map中。 Required

返回

synchronizedNavigableMap() 方法返回指定導航Map的同步視圖。

異常

NA

兼容版本

Java 1.8 及以上

例子1

import java.util.*;
public class CollectionsSynchronizedNavigableMapExample1 {
	public static void main(String[] args) {
		NavigableMap<String, String> map = new TreeMap<String, String>();
		map.put("3", "Java");
		map.put("4", "JavaTpoint");
		map.put("2", "Facebook");
		map.put("1", "Google");
		Map<String, String> synmap = Collections.synchronizedNavigableMap(map);
		System.out.println("Synchronized navigable map is:" + synmap);	            
	      }
}

輸出:

Synchronized navigable map is:{1=Google, 2=Facebook, 3=Java, 4=JavaTpoint}

例子2

import java.util.*;
public class CollectionsSynchronizedNavigableMapExample2 {
	public static void main(String[] args) {
		NavigableMap<Integer, Integer> map = new TreeMap<>();
		map.put(1, 1001);
		map.put(2, 1002);
		map.put(3, 1003);
		map.put(4, 1004);
		map.put(5, 1005);
		System.out.println("Map before Synchronized navigable map:" + map);
		Map<Integer, Integer> synmap = Collections.synchronizedNavigableMap(map);	
	     map.remove(4, 1004);
	     System.out.println("Synchronized navigable map after remove(4, 1004):" + synmap);
	     }
}

輸出:

Map before Synchronized map:{1=1001, 2=1002, 3=1003, 4=1004, 5=1005}
Synchronized map after remove(4, 1004):{1=1001, 2=1002, 3=1003, 5=1005}

例子3

import java.util.Collections;
import java.util.NavigableMap;
import java.util.TreeMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
public class CollectionsSynchronizedNavigableMapExample3 {
    private static AtomicInteger counter = new AtomicInteger();
    public static void main(String[] args) throws InterruptedException {
        NavigableMap<Integer, Integer> m = new TreeMap<>();
        NavigableMap<Integer, Integer> map = Collections.synchronizedNavigableMap(m);
        final ExecutorService e = Executors.newFixedThreadPool(10);
        for (int i = 0; i < 10; i++) {
            e.execute(() -> map.put(counter.incrementAndGet(),
                    (int) (Math.random() * 100)));
        }
        e.shutdown();
        e.awaitTermination(1000, TimeUnit.SECONDS);
        System.out.println(map.size());//should be 10
    }
}

輸出:

10






相關用法


注:本文由純淨天空篩選整理自 Java Collections synchronizedNavigableMap() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。