并发编程
文章平均质量分 86
天地不仁以万物为刍狗
天之道,损有余而补不足
人之道,损不足以奉有馀
展开
-
为什么java.util.concurrent 包里没有并发的ArrayList实现?
问:JDK 5在java.util.concurrent里引入了ConcurrentHashMap,在需要支持高并发的场景,我们可以使用它代替HashMap。但是为什么没有ArrayList的并发实现呢?难道在多线程场景下我们只有Vector这一种线程安全的数组实现可以选择么?为什么在java.util.concurrent 没有一个类可以代替Vector呢?答:我认为在java.util.con...转载 2018-02-19 22:32:12 · 505 阅读 · 0 评论 -
学习笔记 --- Java 并发编程 wait sleep yield join
wait和sleep两者的区别 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。 调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备 sleep()方法,是属...原创 2018-12-19 18:24:44 · 166 阅读 · 0 评论 -
学习笔记 --- Java 并发编程总结值 集合 ConcurrentHashMap
并发容器 Java5.0开始针对多线程并发访问设计,提供了并发性能较好的并发容器,引入了java.util.concurrent包。与Vector和Hashtable、Collections.synchronizedXxx()同步容器等相比,util.concurrent中引入的并发容器主要解决了两个问题: 1)根据具体场景进行设计,尽量避免synchronized,提供并发性。 2)...原创 2018-12-05 10:50:55 · 120 阅读 · 0 评论 -
Mark : Spark RDD 内部结构(二) RDD分区
RDD 分区分区先回答第一个问题:RDD 内部,如何表示并行计算的一个计算单元。答案是使用分区(Partition)。RDD 内部的数据集合在逻辑上和物理上被划分成多个小子集合,这样的每一个子集合我们将其称为分区,分区的个数会决定并行计算的粒度,而每一个分区数值的计算都是在一个单独的任务中进行,因此并行任务的个数,也是由 RDD(实际上是一个阶段的末 RDD,调度章节会介绍)分区的个数决定的,我会...转载 2018-04-29 01:05:48 · 289 阅读 · 0 评论 -
Mark:Spark RDD之Partition
概要Spark RDD主要由Dependency、Partition、Partitioner组成,Partition是其中之一。一份待处理的原始数据会被按照相应的逻辑(例如jdbc和hdfs的split逻辑)切分成n份,每份数据对应到RDD中的一个Partition,Partition的数量决定了task的数量,影响着程序的并行度,所以理解Partition是了解spark背后运行原理的第一步。P...转载 2018-04-29 01:18:06 · 182 阅读 · 0 评论 -
学习笔记 --- Java 并发编程总结一 countDownLatch,CyclicBarrier,Semaphore
在多线程程序设计中有三个同步工具需要我们掌握,分别是Semaphore(信号量),countDownLatch(倒计数门闸锁),CyclicBarrier(可重用栅栏) CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同: CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行; 而Cycli...原创 2018-12-05 10:09:49 · 147 阅读 · 0 评论 -
学习笔记 --- Java 并发编程总结二 ThreadLocal
ThreadLocal是什么 ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。 下图为ThreadLocal的内部结构图 从上面的结构图,我们已经窥见ThreadLocal的核心机制: 每个Thread线程...原创 2018-12-05 10:11:00 · 226 阅读 · 0 评论 -
学习笔记 Mark--- 深入分析 ThreadLocal 内存泄漏问题
前言 ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用ThreadLocal,就可能会导致内存泄漏。下面,我们将围绕三个方面来分析ThreadLocal 内存泄漏的问题 ThreadLocal 实现原理 ThreadLocal为什么会内存泄漏 ThreadLocal 最...转载 2018-12-05 10:32:23 · 99 阅读 · 0 评论