随笔分类 -  并发编程专题

线程池的实现原理分析
摘要:什么是线程池 在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系 统资源不足。 为了解决这个问题,就有了线 阅读全文
posted @ 2020-08-16 22:19 会说话的丶猫 阅读(607) 评论(0) 推荐(0)
原子操作类
摘要:原子操作类 原子性这个概念,在多线程编程里是一个老生常谈的问题。 所谓的原子性表示一个或者多个操作,要么全部执行完, 要么一个也不执行。不能出现成功一部分失败一部分的情 况。在多线程中,如果多个线程同时更新一个共享变量,可能 会得到一个意料之外的值。比如 i=1 。A 线程更新 i+1 、 B 线程 阅读全文
posted @ 2020-08-15 16:46 会说话的丶猫 阅读(197) 评论(0) 推荐(0)
阻塞队列
摘要:生产者消费者的实际使用 大家都有使用过分布式消息队列,比如 ActiveMQ、 kafka、RabbitMQ 等等,消息队列的是有可以使得程序之 间实现解耦,提升程序响应的效率。 如果我们把多线程环境比作是分布式的话,那么线程与线 程之间是不是也可以使用这种消息队列的方式进行数据通 信和解耦呢? 阻 阅读全文
posted @ 2020-08-15 16:36 会说话的丶猫 阅读(198) 评论(0) 推荐(0)
并发工具的使用
摘要:前言: 之前的文章中学习了J.U.C中aqs的底层实现原理,这篇文学习一下J.U.C中提供的一些线程同步工具类。 Condition 在前面学习 synchronized 的时候,有讲到 wait/notify 的基本使用,结合 synchronized 可以实现对线程的通信。既然 J.U.C 里面 阅读全文
posted @ 2020-08-12 16:08 会说话的丶猫 阅读(170) 评论(0) 推荐(0)
AQS原理分析
摘要:Lock Lock 在 J.U.C 中是最核心的组件,前面学习 synchronized 的时候说过,锁最重要的特性就是解决并发安全问题。为什么要以 Lock 作为切入点呢?如果有同学看过 J.U.C 包中的所有组件,一定会发现绝大部分的组件都有用到了 Lock。所以通过 Lock 作为切入点使得在 阅读全文
posted @ 2020-08-09 16:22 会说话的丶猫 阅读(376) 评论(0) 推荐(0)
初步认识线程安全性
摘要:前言 这段时间在学习java并发编程这方面的知识,目前正在看《java并发编程之美》,书写的感觉蛮不错的,很细致,个人觉得少了点实际应用场景的案例,但总体来说各方面的知识点写的很详细,从原理到demo都会呈现给读者,此外还看了咕咆的一些教学视屏,里面的讲解让我深有体会,赶紧开个学习专题用以记录自己学 阅读全文
posted @ 2020-08-06 10:42 会说话的丶猫 阅读(159) 评论(0) 推荐(0)
synchronized 锁的原理
摘要:synchronized 的基本认识 在多线程并发编程中 synchronized 一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着 Java SE 1.6 对synchronized 进行了各种优化之后,有些情况下它就并不那么重,Java SE 1.6 中为了减少获得锁和释放锁带来的性 能 阅读全文
posted @ 2020-08-04 23:03 会说话的丶猫 阅读(1078) 评论(0) 推荐(0)
并发编程的基础
摘要:前言: 对于并发编程这块知识点的掌控一直不是很好,基本都是停留在使用synchronized阶段,于是决定开一博客专题记录知识点。 线程的应用 在 Java 中,有多种方式来实现多线程。继承 Thread 类、 实现 Runnable 接口、使用 ExecutorService、Callable、 阅读全文
posted @ 2020-08-02 15:30 会说话的丶猫 阅读(184) 评论(0) 推荐(0)
写给Java程序员看的,CPU 上下文切换、用户态、内核态、进程与线程上下文切换(转)
摘要:1、概述 JDK源码中很多Native方法,特别是多线程、NIO部分,很多功能需要操作系统功能支持,作为Java程序员,如果要理解和掌握多线程和NIO等原理,就需要对操作系统的原理有所了解。 2、CPU 上下文切换 多任务操作系统中,多于CPU个数的任务同时运行就需要进行任务调度,从而多个任务轮流使 阅读全文
posted @ 2020-07-30 10:21 会说话的丶猫 阅读(1644) 评论(0) 推荐(0)