首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
多线程
订阅
faunjoe
更多收藏集
微信扫码分享
微信
新浪微博
QQ
13篇文章 · 0订阅
StampedLock源码分析
StampedLock是JUC并发包里面JDK1.8版本新增的一个锁,该锁提供了三种模式的读写控制,当调用获取锁的系列函数的时候,会返回一个long 型的变量,该变量被称为戳记(stamp),这个戳记代表了锁的状态。我们知道“读写锁允许多个线程同时读共享变量,适用于读多写少的场…
AbstractQueuedSynchronizer源码分析
AQS是JUC框架中重要的类,通过它来实现独占锁和共享锁的,内部很多类都是通过AQS来实现的,比如CountDownLatch、ReentrantLock、ReentrantReadWriteLock、Semaphore。本章是对AbstractQueuedSynchroniz…
ReentrantLock源码分析
有公平和不公平两种获取锁的实现方式。Reentranlock 中有一个内部抽象类Sync继承自AbstractQueuedSynchronized, Reentrantlock支持Condition,AQS中有同步队列和条件队列,不清楚的,可以看下我的另一篇AbstractQu…
CountDownLatch源码分析
CountDownLatch是并发包中提供的一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 用给定的计数值初始化CountDownLatch。调用countDown()方法将计数减一,所以在当前计数到达零之前,调用await()方法会一直…
从字节码看try catch finally的return如何执行
try语句没有执行到,如在try语句之前就返回了,就这样finally语句就不会执行,说明finally语句被执行的前提是相应的try语句被执行到。 在try块中有System.exit(0)(是终止java虚拟机JVM的);语句,连JVM都停止了,所有都结束了,finally…
ThreadLocal源码分析
我们知道多个线程同时读写同一共享变量存在并发问题,为此我们可以突破共享变量,没有共享变量就不会有并发问题,可以使用局部变量。正所谓没有共享,就没有伤害,本质上就是避免共享,除了局部变量,Java语言提供的线程本地存储(ThreadLocal)就能做到。 其实每个线程内部都会维护…
ReentrantReadWriteLock源码分析
在一定程度上降低了吞吐量(单位时间内能处理的请求数)。然而并发读之间不存在数据竞争问题,如果在读多写少场景下,允许并发读同时进行,会进一步提升性能。因此引入了ReentrantReadWriteLock, 顾名思义,ReentrantReadWriteLock是Reentran…
ExecutorCompletionService源码分析
QueueingFuture,QueueingFuture重写了done()方法,done方法在FutureTask类中是空实现,任务执行完会调用此方法,不清楚的可以看下我的另一篇FutureTask源码分析,模板方法, 子类可以进行重写),因为提交的任务被转换为Queuein…
ThreadPoolExecutor源码分析
使用线程池相比于new Thread为每次请求创建一个线程,有效的避免了线程的频繁创建和销毁的开销,java线程是个重量级对象,和操作系统线程对应。首先,频繁的线程切换会使操作系统频繁的进行上下文切换,增加了系统的负载, 其次,线程的创建和销毁是需要耗费系统资源的,明显浪费了系…
Java并发-CopyOnWriteArrayList
前言今天我们一起学习下java.util.concurrent并发包里的CopyOnWriteArrayList工具类。当有多个线程可能同时遍历、修改某个公共数组时候,如果不希望因使用synchron