---------------------------------------------
1. 传统 java.util 中的集合类都是 fail-fast
2. java.concurrent 中的集合类都是 weakly-consistent
2. fail-fast or weakly-consistent
4. Synchronizer
---------------------------------------------
1. Queue 通常可以替代 List,来获得更好的性能.
Queue 的类是:
LinkedList 已经进行了改进来实现 Queue。
PriorityQueue 非线程安全的优先级对列(堆)实现,根据自然顺序或比较器返回元素。
ConcurrentLinkedQueue 快速、线程安全的、无阻塞 FIFO 队列。
ConcurrentLinkedQueue 类实现先进先出(first-in-first-out,FIFO)队列,而 PriorityQueue 类实现优先级队列(也称为堆),它对于构建调度器非常有用,调度器必须按优先级或预期的执行时间执行任务。
2. java.util.concurrent 包添加了多个新的线程安全集合类(ConcurrentHashMap、CopyOnWriteArrayList 和 CopyOnWriteArraySet)。这些类的目的是提供高性能、高度可伸缩性、线程安全的基本集合类型版本。
3. CopyOnWriteArrayList 类通过每次添加或删除元素时创建支持数组的新副本,避免了这个问题,但是进行中的迭代保持对创建迭代器时的当前副本进行操作。虽然复制也会有一些成本,但是在许多情况下,迭代要比修改多得多,在这些情况下,写入时复制要比其他备用方法具有更好的性能和并发性。
3. ConcurrentHashMap 是 Hashtable或 Collections.synchronizedMap(new HashMap()) 的简单替换。然而,其中有一个显著不同,即 ConcurrentHashMap 实例中的同步不锁定映射进行独占使用。
4. 线程池大小的设置:
WT 表示每项任务的平均等待时间,ST 表示每项任务的平均服务时间(计算时间)。则 WT/ST 是每项任务等待所用时间的百分比。对于 N 处理器系统,池中可以近似有 N*(1+WT/ST) 个线程。
5. 使用 Future 构建缓存
6. Synchronizer 类的结构点
CyclicBarrier 类可以帮助同步,它允许一组线程等待整个线程组到达公共屏障点。CyclicBarrier 是使用整型变量构造的,其确定组中的线程数。当一个线程到达屏障时(通过调用 CyclicBarrier.await()),它会被阻塞,直到所有线程都到达屏障,然后在该点允许所有线程继续执行。该操作与许多家庭逛商业街相似 —— 每个家庭成员都自己走,并商定 1:00 在电影院集合。当您到电影院但不是所有人都到了时,您会坐下来等其他人到达。然后所有人一起离开。
7.Lock
ReentrantLock ,synchronized 的扩展,synchronized unlock 是在syn块结束后自动释放,而ReentrantLock 提供了自定义的unlock方式,可以在特定地方unlock. 因为锁定失误(忘记释放锁定)的风险,所以对于基本锁定,强烈建议您继续使用 synchronized
------------------------------------------
Hashtable 与 ConcurrentHashMap
作为可伸缩性的例子,ConcurrentHashMap 实现设计的可伸缩性要比其线程安全的上一代 Hashtable 的可伸缩性强得多。Hashtable 一次只允许一个线程访问 Map;ConcurrentHashMap 允许多个读者并发执行,读者与写入者并发执行,以及一些写入者并发执行。因此,如果许多线程频繁访问共享映射,使用 ConcurrentHashMap 的总的吞吐量要比使用 Hashtable 的好。
下表大致说明了 Hashtable 和 ConcurrentHashMap 之间的可伸缩性差别。在每次运行时,N 个线程并发执行紧密循环,它们从 Hashtable 或 ConcurrentHashMap 中检索随即关键字,60% 的失败检索将执行 put() 操作,2% 的成功检索执行 remove() 操作。测试在运行 Linux 的双处理器 Xeon 系统中执行。数据显示 10,000,000 个迭代的运行时间,对于 ConcurrentHashMap,标准化为一个线程的情况。可以看到直到许多线程,ConcurrentHashMap 的性能仍保持可伸缩性,而 Hashtable 的性能在出现锁定竞争时几乎立即下降。
与通常的服务器应用程序相比,这个测试中的线程数看起来很少。然而,因为每个线程未进行其他操作,仅是重复地选择使用该表,所以这样可以模拟在执行一些实际工作的情况下使用该表的大量线程的竞争。
线程 ConcurrentHashMap Hashtable
1 1.0 1.51
2 1.44 17.09
4 1.83 29.9
8 4.06 54.06
16 7.5 119.44
32 15.32 237.2
分享到:
相关推荐
总结来说,"并行运算支持库"提供了一个在不同系统平台上进行并行计算的工具,而OpenMPI作为其中的一个实例,是基于C语言的MPI实现,能够帮助开发者构建高效、可扩展的并行应用程序。它在科学研究、工程计算等领域...
总结来说,理解并行运算和神经网络的关系以及如何在CPU和GPU上实现并行计算,对于提升人工智能模型的训练效率至关重要。随着硬件技术的进步和软件优化,我们期待并行运算在未来的神经网络发展中发挥更大的作用,推动...
总结,矩阵的并行运算是提升计算效率的关键技术,通过数据并行、任务并行和混合并行等方式,我们可以充分利用多核处理器和分布式系统的优势,解决大规模矩阵运算的挑战。开发者可以借助OpenMP、MPI、CUDA等工具和库...
并行运算与神经网络是现代计算领域中的重要概念,特别是在深度学习和大数据处理中占据了核心地位。本资料包“并行运算与神经网络-基于CPUGPU的并行神经网络运算.zip”着重探讨了如何利用CPU和GPU进行并行化的神经...
总结来说,KMP并行运算结合了经典的字符串匹配算法与现代并行计算技术,旨在解决大数据量下的字符串匹配问题。通过合理地分解任务并行执行,它能够有效地提高计算效率,尤其适用于处理大规模文本数据的场景。深入...
Matlab 从 R2007b 版本开始,通过并行计算工具箱(Parallel Computing Toolbox)提供了对多核并行运算的良好支持。 在 Matlab 中,通过 `matlabpool` 命令可以启动并行计算环境。在示例中,`matlabpool local 2` ...
总结来说,本文提出的基于分级存储并行运算的FFT处理器设计,通过优化算法和并行化处理,实现了在降低功耗的同时提高运算速度,这对于现代无线通信系统和数字信号处理应用具有重要的实际意义。这项工作也为后续的...
### NUMECA并行计算教程知识点总结...以上知识点详细介绍了使用NUMECA软件进行分布式和集中式并行运算的方法和步骤,覆盖了从前期准备到实际操作的各个方面,有助于用户全面了解并掌握如何利用该软件进行高效并行计算。
关于MPI、并行计算的总结对比,目录如下: 1. 并行计算 1.1. 相关背景 1.2. 什么是并行计算 1.3. 主要目的 1.4. 并行计算与分布式计算 1.5. 并行的基本条件 1.6. 主要的并行系统 1.6.1. 共享内存模型 1.6.2. 消息...
标题中的“基于GPU并行运算的红外运动目标实时增强算法”指的是在红外成像领域,利用图形处理器(GPU)的并行计算能力来实现实时的运动目标增强技术。GPU因其强大的并行处理能力,被广泛应用于数据密集型和计算密集...
根据提供的文件信息,我们可以提炼出以下知识点,...以上就是根据文件提供的信息,关于ANSYS系列并行计算的相关知识点总结。由于文档内容可能存在OCR识别错误,其中的术语和具体数值可能需要根据实际情况进一步核实。
### MATLAB运算采用GPU加速的关键知识点 #### 一、引言 在现代科学计算与数据分析领域,MATLAB作为一种广泛使用的高级编程语言和交互式环境,因其强大的数学计算能力、丰富的工具箱支持以及便捷的图形化界面而深受...
ansys18.2+VS2010安装教程+Fluent并行运算设置+udf编译教程 本人根据此安装流程在win7、win10系统上均安装过ansys 15.0、16.0、 17.0 、18.0 、18.2、19.1几十次,多年来总结的安装经验,全程无手动添加环境变量 ...
总结来说,PyTorch 的多GPU并行运算通过 `nn.DataParallel` 实现,可以有效地加速深度学习模型的训练。在实践中,要合理分配GPU资源,避免显存溢出,并根据实际情况调整批处理大小。同时,理解不同并行策略的适用...
在这个实验中,学生使用了74LS181芯片,这是一个8位的ALU,它可以执行并行的加法、减法、逻辑与、逻辑或、异或等操作。通过实验,学生可以掌握74LS181的组合功能,即如何根据输入的控制信号来决定执行哪种运算。 ...
16位补码并行加法器(含减法器)实验是学习计算机内部运算机制的重要实践环节。这个实验旨在帮助学生理解和掌握如何设计和实现一个能够进行加法和减法操作的硬件电路,这对于理解计算机内部数据处理过程至关重要。 ...
7. **实验与实践**:通过实验报告,学生可以实际操作并行计算项目,如并行排序、矩阵运算、图形渲染等,加深对理论知识的理解。 8. **考试复习总结**:这部分可能包含了历年的考试题目类型、重点知识点回顾以及解题...
总结来说,基于FPGA的快速并行FFT技术在解决航天领域的高速数据处理挑战方面显示出巨大的优势。它不仅提升了运算速度,确保了实时处理能力,还通过优化的算法和硬件设计,保证了运算精度和系统的可靠性,为未来空间...
使用 Fluent 在超算中心进行并行计算的入门指南...本文总结了使用 Fluent 在超算中心进行并行计算的入门指南,包括机群的组成部分、如何使用机群、如何使用 Fluent 在机群中进行并行计算、 Fluent 的脚本实例等知识点。
- **性能计算**:考虑运算次数和延迟时间来评估滤波器性能。 - **操作链接**:通过链接不同操作来减少数据复制和存储开销。 - **代码提升**:将重复的代码段提取出来,减少冗余,提高代码复用性。 - **循环拆分**:...