`

concurrentHashMap的多线程并发问题

阅读更多
public class Test implements Runnable{
	private static Map<Integer, Integer> map = new ConcurrentHashMap<>();

	@Override
	public  void run() {
		update();
	}
	
	public  void update(){
		map.put(1,map.get(1)+1);
	}
	
	public static void main(String[] args) throws InterruptedException{
		int i = 10000;
		while (i > 0){
			map.put(1, 1);
			Test t = new Test();
			Thread t1 = new Thread(t);
			Thread t2 = new Thread(t);
			Thread t3 = new Thread(t);
			Thread t4 = new Thread(t);
			
			t1.start();
			t2.start();
			t3.start();
			t4.start();
			
			t1.join();
			t2.join();
			t3.join();
			t4.join();
			
			if(map.get(1) != 5)
				System.out.println(map.get(1));
			i--;
		}
		
	}
	
}

 有上面这个测试类. 但是对于结果表示很疑惑. 因为concurrentHashMap是线程安全的, 那么按照这个来做, 当上面这个测试类中的map被4个线程操作以后产生的结果应该为 map.get(1)=5 才对...但是从结果来看,并非都是如此啊. 这是什么原因造成的呢?

分享到:
评论

相关推荐

    多线程并发处理数据的问题

    在IT行业中,多线程并发处理数据是一种常见的优化策略,特别是在大数据处理、网络服务和分布式系统中。通过并发,可以充分利用多核处理器的计算能力,提高程序执行效率,缩短任务的总体完成时间。本篇文章将深入探讨...

    JAVA多线程并发编程

    但同时,多线程并发也会引入一些问题,如数据竞争和同步问题。 为了解决这些问题,Java提供了多种同步机制。`synchronized`关键字用于控制对共享资源的访问,确保同一时间只有一个线程可以执行特定代码块,从而避免...

    多线程,高并发.zip

    这些工具可以帮助开发者更好地处理并发问题,实现高效、低延迟的并发编程。 在设计高并发系统时,还需要考虑线程安全的设计模式,如生产者消费者模型、读写锁策略以及双检锁/双重校验锁(DCL)等。理解这些模式有助...

    多线程并发学习书籍

    在IT行业中,多线程并发编程是至关重要的一个领域,特别是在服务器端开发、大数据处理以及高性能计算中。这里提到的“多线程并发学习书籍”集合包含六本关于这一主题的专业书籍,覆盖了2012年至2018年的最新知识。...

    java多线程和并发.pdf

    Java多线程与并发编程是Java语言中用于处理多任务执行的关键技术,它能够帮助开发者设计出能够有效应对高并发请求的应用程序。在现代的线上(Online)和离线(Offline)应用中,合理利用多线程技术可以大幅提高系统...

    java多线程并发实战和源码

    Java多线程并发实战与源码分析是Java开发中至关重要的一部分,它涉及到程序性能优化、系统资源高效利用以及复杂逻辑的正确同步。本书主要聚焦于Java多线程的基础理论和实际应用,虽然书中实例和源码相对较少,但仍然...

    多线程并发编程在Netty中的应用分析

    ### 多线程并发编程在Netty中的应用分析 #### JAVA内存模型与多线程编程 ##### 1.1. 硬件的发展和多任务处理 随着硬件技术的不断进步,尤其是多核处理器的普及及其成本的降低,现代操作系统几乎都具备了支持多...

    java 多线程高并发相关资料收集

    Java并发库中还包括了并发集合,如ConcurrentHashMap、CopyOnWriteArrayList等,它们提供了线程安全的数据结构,可以在多线程环境下高效地进行读写操作。另外,Future和Callable接口允许异步计算结果,并可以检查...

    java多线程并发及集合框架面试题

    面试中,Java 集合框架和多线程并发是常见的话题,因为它们是构建可扩展和健壮应用的基础。本题旨在考察候选人在实际并发场景下对 HashMap 和 ConcurrentHashMap 的理解和应用。 HashMap 和 ConcurrentHashMap 的...

    对java的BitSet的多线程并发的探索

    在多线程并发环境中,对BitSet的操作需要特别注意,因为位操作本身是原子性的,但BitSet的大部分方法并不是线程安全的。这篇博文主要探讨了如何在多线程环境下正确地使用Java的BitSet。 首先,我们要理解BitSet的...

    java多线程并发编程 核心技术应用实践

    Java多线程并发编程是Java开发中的重要领域,它涉及到如何高效地利用计算机资源,特别是在多核处理器系统中,能够显著提升程序的执行效率。在《java多线程并发编程核心技术应用实践》中,我们将深入探讨Java平台上的...

    多线程并发集合资料.zip

    在Java编程中,多线程并发集合是程序员在开发高并发应用时必须掌握的重要概念。这些集合类的设计目的是为了在多线程环境下提供高效、安全的数据共享,避免数据竞争和死锁等问题。以下是对给定文件中涉及知识点的详细...

    Java多线程并发访问解决方案

    在Java编程中,多线程并发访问是提升应用程序性能的重要手段,但同时也带来了数据一致性、安全性及效率等问题。本文将深入探讨Java中的多线程并发访问解决方案,主要围绕以下几个核心知识点进行阐述: 1. **线程...

    java的hashMap多线程并发情况下扩容产生的死锁问题解决.docx

    在Java的HashMap中,多线程并发环境下的扩容操作可能会引发死锁问题。这主要发生在JDK 1.7版本,因为其扩容机制采用了头插法。以下详细解释这个问题及其解决方案。 首先,HashMap的扩容机制是在容量达到阈值时触发...

    24 经典并发容器,多线程面试必备。—深入解析ConcurrentHashMap.pdf

    【并发容器的线程安全性】与`HashMap`不同,`ConcurrentHashMap`通过采用非阻塞算法(如CAS操作)和分段锁机制来保证并发性能,避免了整个表的锁定,提高了在多线程环境下的并发性和性能。 【存储结构】`...

    深入Java多线程和并发编程

    ### 深入Java多线程与并发编程 在当今高度发展的信息技术领域中,随着硬件技术的进步和软件架构设计的复杂化,多线程与并发编程成为提高程序执行效率、增强系统性能的关键技术之一。本篇文章将围绕Java多线程与并发...

    多线程并发抢票案例.zip

    在IT行业中,多线程是一种常见的编程技术,尤其在高并发场景下,如我们的主题“多线程并发抢票案例”。这种技术允许程序同时执行多个不同的任务,从而提高效率和响应速度。在抢票系统中,多线程的运用至关重要,因为...

    多线程与高并发-电子.pdf

    并发容器,如ConcurrentHashMap,是专为多线程环境设计的线程安全容器。它们能够提供比传统同步容器如Hashtable更好的性能。线程池是一种资源池化技术,用于管理线程的生命周期,减少线程创建和销毁的开销,同时合理...

    【2018最新最详细】并发多线程教程

    【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 3.java内存模型以及happens-before规则 4.彻底理解synchronized 5.彻底理解volatile 6.你以为你真的了解final吗...

    Java 多线程与并发(13-26)-JUC集合- ConcurrentHashMap详解.pdf

    【Java 多线程与并发】并发集合类`ConcurrentHashMap`是Java程序设计中一个重要的工具,尤其在高并发场景下,它提供了高效的线程安全。`ConcurrentHashMap`在JDK 1.7和1.8中有着显著的区别。 在JDK 1.7中,`...

Global site tag (gtag.js) - Google Analytics