Java ConcurrentHashMap (Java代码实战-005)
package Threads; import com.google.common.collect.Maps; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by xfyou 2018/5/21 16:55. * 一个采用ConcurrentHashMap并发写数据的例子 */ public class ConcurrentHashMapDemo { private final ConcurrentMap<Integer, String> conHashMap = Maps.newConcurrentMap(); public static void main(String[] args) { ExecutorService service = Executors.newFixedThreadPool(3); try { ConcurrentHashMapDemo ob = new ConcurrentHashMapDemo(); service.execute(ob.new WriteThreadOne()); service.execute(ob.new WriteThreadTwo()); service.execute(ob.new ReadThread()); } finally { service.shutdown(); } } /** * 线程A向Map中put数据 */ class WriteThreadOne implements Runnable { @Override public void run() { for (int i = 0; i < 10; i++) { conHashMap.putIfAbsent(i, "A" + i); } } } /** * 线程B向Map中put数据 */ class WriteThreadTwo implements Runnable { @Override public void run() { for (int i = 0; i < 5; i++) { conHashMap.putIfAbsent(i, "B" + i); } } } /** * 线程C读取Map中的数据 */ class ReadThread implements Runnable { @Override public void run() { for (Integer k : conHashMap.keySet()) { System.out.println(k + ":" + conHashMap.get(k)); } } } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步