首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
并发编程
Java湖罗布
创建于2022-02-15
订阅专栏
记录并发编程知识
等 3 人订阅
共21篇文章
创建于2022-02-15
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Phaser并发阶段器
Phaser并发阶段器 Phaser由JDK1.7提出,是一个复杂强大的同步辅助类,是对同步工具类CountDownLatch和CyclicBarrier的综合升级,能够支持分阶段实现等待的业务场景。
JAVA实现简单限流器(上)
JAVA实现简单限流器 什么是限流器 在高并发的场景下,出于对系统的保护会对流量进行限制。 信号量实现限流器 提到限流器的实现方式,很容易可以想到信号量是与之类似的原理,都是允许一定数量的线程访问临界
并发生产者消费者模式
并发生产者消费者模式 前言引入 并发分工问题可以采用三大模式解决,Thread-Pre-Message模式、Worker Thread模式另外一种就是生产者消费者模式,这种模式的核心其实就是任务队列(
两阶段线程终止模型
两阶段线程终止模型 前言引入 线程终止主要应对的场景是一些服务只做阶段性任务的处理,处理完毕就可以终止线程,如项目中有可能使用到的数据迁移服务,使用时间较短,使用完毕就会将线程终止,那么如何去终止一个
并发分工问题的解决模式
并发分工模式 前言引入 并发三大问题就是互斥、同步、分工,这三大问题JAVA都提供了解决方案,如互斥可以使用互斥锁解决,同步可以采用管程原语解决,分工都是采用Fork/join、线程池解决等等,不过这
Guarded Suspension模式
Guarded Suspension模式 什么是Guarded Suspension模式 Guarded Suspension直译为保护性挂起,其核心是一个受保护的方法,该方法在执行其所需要真正执行的
ThreadLocal本地存储保证并发安全
ThreadLocal本地存储保证并发安全 前言引入 多线程因为并发执行带来了性能上的优势,同时也因为多线程间的数据竞争导致线程安全问题,我之前有提过可以利用不变性类Immutability来解决线程
利用不变性解决并发问题
利用不变性解决并发问题 不变性模式 我们知道并发最容易产生线程不安全的问题,主要原因是存在数据竞争,如果多个线程对同一个变量只读不修改那么就不存在线程安全问题,这种思想其实很简单,但也是最容易被我们忽
Fork/Join(JAVA版MapReduce)
Fork/Join(JAVA版MapReduce) 分治思想 接触过大数据的同学都应该了解过大数据知名计算框架MapReduce,MapReduce采用任务分解,结果合并的方式简单方便的完成大数据编程
JAVA线程池
线程池 为什么采用线程池 在Java中创建线程看着就像创建一个对象,继承Thread或者实现Runnable接口都可以实现,但其实并不是那么简单,创建对象需要JVM分配内存空间,而创建线程则需要调用操
原子类无锁并发利器
原子类无锁并发利器 前言引入 当存在如下场景,两个线程同时去将count值累加一万次,那么如下代码是否存在线程安全问题呢? 显然是存在的,最终的结果显然是小于两万的,原因是count值存在可见性问题,
如何让多线程步调一致
如何让多线程步调一致 场景引入 假设存在业务场景,电商系统有一个对账系统,该对账系统就是先查询订单库再查询派送单库,然后执行对账逻辑,将它们的差异写入差异库,逻辑如下所示。 将场景代码化如下: 这种写
读写锁的增加版--StampedLock
读写锁的增加版--StampedLock 前言 读写锁ReentrantReadWriteLock的优势比一般互斥锁大了不少,因为它支持读读不互斥,读写互斥,写写互斥,对于读多写少的场景简直是yyds
ReadWriteLock读写锁
ReadWriteLock读写锁 前言 现在我们知道了并发原语信号量和管程可以解决所有的并发问题,但是SDK并发包中却包含其它工具类这是重复造火箭吗?当然不是,工具包突出的是分场景优化性能,提升易用性
Semaphore信号量
Semaphore信号量 什么是信号量 信号量由著名计算机科学家迪杰斯特拉(Dijkstra)于 1965 年提出,提出后的15年对并发编程领域是统治地位,直到1980年管程的提出才有了第二选择。 信
并发包中的管程
并发包中的管程 什么是Lock和Condition 并发包SDK中存在管程的另一个实现即Lock和Condition,其中Lock可以解决互斥问题,Condition可以解决管程的同步问题(通信和协作
线程数设置多少合适
线程数设置多少合适 为什么要使用多线程 使用多线程本质上是提升性能,性能可能直接理解为快!快就完事了,但是这样的说法太笼统,那应该如何度量性能呢? 度量性能最常用的指标为吞吐量和延迟,延迟指一个请求从
为什么局部变量线程安全
为什么局部变量线程安全 我们知道方法内部定义的变量属于局部变量,而局部变量的作用域仅仅存在一个方法的内部,不能被外部所引用,那这到底是为什么呢? 场景引入 假如存在方法计算斐波那契数列,什么是斐波那契
线程生命周期
线程生命周期 通用生命周期 一般的线程生命周期大致分为五大部分,如图所示。 初始状态,从程序角度上来将已经创建线程,但是操作系统层面还没有创建线程,这是编程语言所特有的。 就绪状态,也叫可运行状态这时
并发万能钥匙管程
并发万能钥匙管程 什么是管程 管程对应英文Monitor,英文直译为监视器,所谓管程指的是用来管理共享变量以及对共享变量的操作过程让其支持并发。 管程在发展过程中有三种管程模型,Hasen模型、Hoa
下一页