package base;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class HashMapMultiThread {// 1、运行正常,结果正常// 2、运行正常,结果错误//3、若是JDK1.8以下,程序会无法结束,由于多线程冲突链表已经遭到破坏,成了环形//如k1、k2互为对象的next元素,这样next引用遍历就成了死循环。//JDK1.8也会导致内部数据不一致。//private static Map<String, String> map = new HashMap<String, String>();private static ConcurrentHashMap<String, String> map = new ConcurrentHashMap<String, String>();public static void main(String[] args) throws InterruptedException {Thread t = new Thread(new AddThread(0));Thread t1 = new Thread(new AddThread(1));t.start();t1.start();t.join();t1.join();System.out.println("map size: " + map.size());}public static class AddThread implements Runnable {int start = 0;public AddThread(int start) {super();this.start = start;}@Overridepublic void run() {for (int i = start; i < 10000; i++) {map.put(Integer.toString(i), Integer.toBinaryString(i));}}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。