![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 80
大白给小白讲故事
大白给小白讲技术那点事,目前专注于Java领域(朋友,你好像有点东西)
展开
-
深入并发-线程池
什么是线程池在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了解决这个问题,就有了线程池的概念,线程池的核心逻辑是提前创建好若干个线程放在一个容器中。如果有任务需要处理,则将任务直接分...原创 2020-04-06 22:39:07 · 205 阅读 · 0 评论 -
深入并发-内存模型
从硬件层面了解可见性一台计算机中最核心的组件是 CPU、内存、以及 I/O 设备。在整个计算机的发展历程中,除了 CPU、内存以及 I/O 设备不断迭代升级来提升计算机处理性能之外,还有一个非常核心的矛盾点,就是这三者在处理速度的差异。CPU 的计算速度是非常快的,内存次之、最后是 IO 设备比如磁盘。而在绝大部分的程序中,一定会存在内存访问,有些可能还会存在 I/O 设备的访问。为了提升计算...原创 2020-04-05 21:18:09 · 332 阅读 · 0 评论 -
深入并发-Synchronized
synchronized的使用在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对 synchronized进行了各种优化之后,有些情况下它就并不那么重了,Java SE 1.6中为了减少获得锁和释放锁带来的 性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。通过 synchronized关键字来修饰在inc的方...原创 2018-09-08 11:14:18 · 17334 阅读 · 8 评论 -
深入并发-线程
线程的出现什么是进程?进程的本质是一个 正在执行的程序,程序运行时系统会创建一个进程,并且给每个进程分配独立的内存地址空间保证每个进程地址不会相互干扰。同时,在 CPU 对进程做时间片的切换时,保证进程切换过程中仍然要从进程切换之前运行的位置出开始执行。所以进程通常还会包括程序计数器、堆栈指针。有了进程以后,为什么还会发明线程呢?在多核 CPU 中,利用多线程可以实现真正意义上的并行执行...原创 2020-03-31 11:41:28 · 147 阅读 · 0 评论 -
深入并发-ConcurrentHashMap
概述关于Java集合的小抄是这么描述:并发优化的HashMap。在JDK5里的经典设计,默认16把写锁(可以设置更多),有效分散了阻塞的概率。数据结构为Segment[],每个Segment一把锁。Segment里面才是哈希桶数组。Key先算出它在哪个Segment里,再去算它在哪个哈希桶里。也没有读锁,因为put/remove动作是个原子动作(比如put的整个过程是一个对数组...原创 2020-03-29 21:28:52 · 242 阅读 · 0 评论 -
深入并发-工具类
CountDownLatch如果不熟悉 AQS 的同学建议先去看楼主的之前的博文《深入并发-AQS》,不然理解本章将很吃力。概念CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完毕再执行。从命名可以解读到 countdown 是倒数的意思,类似于我们倒计时的概念。CountDownLatch 提供了两个方法,一个是 countDown,一...原创 2020-03-27 16:58:41 · 124 阅读 · 0 评论 -
深入并发-Condition
Condition概念JUC 包提供了 Condition 来对锁进行精准控制,Condition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒。Condition的本质就是等待队列和同步队列的交互。源码分析如果不熟悉 AQS 的同学建议先去看楼主的上一篇博文《深入并发-AQS》,不然理解本章将很吃力。下面是对 Cond...原创 2020-03-26 16:58:03 · 208 阅读 · 0 评论 -
深入并发-AQS
概念AQS是什么在 Lock 中,用到了一个同步队列 AQS,全称 AbstractQueuedSynchronizer,它是一个同步工具也是 Lock 用来实现线程同步的核心组件。如果你搞懂了 AQS,那么 J.U.C 中绝大部分的工具都能轻松掌握。AQS 的两种功能从使用层面来说,AQS 的功能分为两种:独占和共享独占锁:每次只能有一个线程持有锁,比如 ReentrantLock 就...原创 2020-03-25 18:04:51 · 244 阅读 · 0 评论 -
浅谈ExecutorService线程池创建
转载至https://www.cnblogs.com/zedosu/p/6665306.htmlThreadPoolExecutor最核心的构造方法 构造方法参数讲解 参数名 作用 corePoolSize 核心线程池大小 maximumPoolSize 最大线程池大小 keepAliveTime 线程池中超过corePoolSize数目的空闲线程最...转载 2018-08-29 23:26:30 · 1898 阅读 · 0 评论