首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
多线程/高并发
订阅
黄奕
更多收藏集
微信扫码分享
微信
新浪微博
QQ
29篇文章 · 0订阅
条件队列大法好:使用wait、notify和notifyAll的正确姿势
前面介绍wait和notify的基本语义,参考条件队列大法好:wait和notify的基本语义。这篇讲讲使用wait、notify、notifyAll的正确姿势。 状态依赖的类:在状态依赖的类中,存在着某些操作,它们拥有基于状态的前提条件。也就是说,只有该状态满足某种前提条件时…
为什么阿里巴巴要禁用Executors创建线程池?
管理一组工作线程。通过线程池复用线程有以下几点优点: 在介绍Executors创建线程池方法前先介绍一下ThreadPoolExecutor,因为这些创建线程池的静态方法都是返回ThreadPoolExecutor对象,和我们手动创建ThreadPoolExecutor对象的区…
Java并发(6)- CountDownLatch、Semaphore与AQS
上一篇文章中详细分析了基于AQS的ReentrantLock原理,ReentrantLock通过AQS中的state变量0和1之间的转换代表了独占锁。那么可以思考一下,当state变量大于1时代表了什么?J.U.C中是否有基于AQS的这种实现呢?如果有,那他们都是怎么实现的呢?…
Java 线程池的理论与实践
Doug Lea 前段时间公司里有个项目需要进行重构,目标是提高吞吐量和可用性,在这个过程中对原有的线程模型和处理逻辑进行了修改,需要 发现有很多基础的多线程的知识已经模糊不清,如底层线程的运行情况、现有的线程池的策略和逻辑、池中线程的健康状况的监控等,这次重新回顾了一下,其中涉…
彻底理解synchronized
通过字节码分析以及源码解析深入理解synchronized的使用场景以及背后的实现原理,避免在生产环境出现并发问题,
spring mvc + redis 实现分布式锁(注解实现可自动重试)
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于 Redis 的分布式锁;3. 基于 ZooKeeper 的分布式锁。本文介绍基于 Redis 实现分布式锁。 本文中的分布式锁通过注解的方式实现,可以自定义重试次数,锁超时时间等。 互斥性。在任意时刻,只有一个客户端能…
线程池没你想的那么简单
原以为线程池还挺简单的(平时常用,也分析过原理),这次是想自己动手写一个线程池来更加深入的了解它;但在动手写的过程中落地到细节时发现并没想的那么容易。结合源码对比后确实不得不佩服 Doug Lea 。 我觉得大部分人直接去看 java.util.concurrent.Threa…
Java内存模型相关原则详解
在《Java内存模型(JMM)详解》一文中我们已经讲到了Java内存模型的基本结构以及相关操作和规则。而Java内存模型又是围绕着在并发过程中如何处理原子性、可见性以及有序性这三个特征来构建的。本篇文
别再说你不懂线程池——做个优雅的攻城狮
线程池,顾名思义就是装线程的池子。其用途是为了帮我们重复管理线程,避免创建大量的线程增加开销,提高响应速度。 作为一个严谨的攻城狮,不会希望别人看到我们的代码就开始吐槽,new Thread().start()会让代码看起来混乱臃肿,并且不好管理和维护,那么我们就需要用到了线程…
Java并发工具类(闭锁CountDownLatch)
闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。 CountDownLatch是一种灵活的闭锁实现,它可以使一个或者多个线程等待一组事件的发生。 闭锁状态包含一个计数器,该计数器被初始化为一个正数,表示需要等待的事件数量。countDown方法递减计数器,表示已经有…