我知道TreeMap不是线程安全的.我正在尝试将TreeMap与ConcurrentSkipListMap进行比较.我使用的代码如下所示,我想确定我得到的错误是由于TreeMap不是线程安全而不是因为其他一些.
java中java.util.TreeMap.fixAfterInsertion(TreeMap.java:2127)的java.util.TreeMap.rotateLeft(TreeMap.java:2060)中的线程"pool-1-thread-52"java.lang.NullPointerException中的异常. util.TreeMap.put(TreeMap.java:574)位于java.util.concurrent.ThreadPoolExecutor $的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)的ThreadTestTreeMap $ 1.run(ThreadTestTreeMap.java:39) java.lang.Thread.run上的Worker.run(ThreadPoolExecutor.java:615)(Thread.java:745)
import com.google.common.collect.Ordering;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadTestTreeMap {
public static Map<String, Object> map;
public static int THREADS = 100;
public static long averageTime = 0;
public static void main(String args[]) throws InterruptedException {
for (int i = 0; i < 1; i++) {
map = new TreeMap<>(Ordering.natural());
// map = new ConcurrentSkipListMap<>(Ordering.natural());
long time = System.nanoTime();
ExecutorService service = …Run Code Online (Sandbox Code Playgroud)