首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
有猫码
掘友等级
CRUD攻城狮
|
ANT
你有悲欢离合,码有阴晴圆缺
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
97
文章 86
沸点 11
赞
97
返回
|
搜索文章
最新
热门
AQS相关组成及原理源码解析
1. 队列同步器AQS的组成及使用 它的主要作用就是同个state的加减和队列来管理线程的执行。 看源码可知:ReentrantLock、Semaphore、ReentrantReadWriteLock、CountDownLatch中都有继承自AQS的Sync及其子类。 AQS…
ConcurrenthashMap与CopyOnWriteArrayList的原理及源码分析
1. ConcurrentHashMap源码原理分析 ConcurrentHashMap默认有16个segment,所以最多支持16个线程并发写(操作在不同的segment上时)。默认值在初始化的时候可以指定,但是一旦初始化过后,就不可以扩容。但是每个Segment内部是可以扩…
Atomic原子类及CAS相关源码分析
1. J.U.C下的原子类 原子类,对象的数据操作不可分割的。具有原子性 boolean compareAndSet(int expect, int update) 判断当前值是否符合预期值expect,如果符合就设置更新值update。 AtomicIntegerFieldU…
J.U.C下Lock的分类及特点详解
1. Lock接口 lock()就是最普通的获取锁,如果锁已被其他线程获取,则等待;Lock不会像synchronized一样在异常时自动释放锁,因此我们需要手动释放锁,最佳实践:在finally中释放锁,以保证发生异常时锁一定被释放。此外lock()方法不能被中断,这会有很大…
ThreadLocal的用法以及内部原理
1. ThreadLocal的用途 ThreadLocal它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。 场景1:每个线程需要一个独享的对象(通常是工具类,比如:SimpleDateFormat和Random) 我们就可以用ThreadLocal来保存对象…
剖析线程池的使用与组成
1. 线程池介绍 统一资源管理,当任务多了,我们就可以利用线程池来统一操作。 服务器接收请求量大,我们可以通过线程池来复用线程,减少线程的创建和销毁开销。 实际开发中我们推荐线程都用线程池来管理。 2. 线程池参数详解 corePoolSize:线程池在完成初始化后,默认线程池…
深入理解死锁问题及其解决方案
1. 死锁的定义与影响 发生在并发中,多个线程(进程)互不相让,相互持有对方所以需要的资源,又不主动释放,导致所有人都无法继续前进,导致程序陷入无尽的阻塞,就是死锁。 假设有三个线程:线程1持有锁A想要获取锁B;线程2持有锁B想要获取锁C;线程3持有锁C想要获取锁A;三者形成了…
JMM(Java内存模型)在并发中的原理与应用
1. JVM内存结构、Java内存模型与Java对象模型 辨析 JVM内存结构,也可以称作JVM运行时内存,这个和我们代码执行在JVM上使用内存有关。 Java内存模型则是和并发编程相关。后面会仔细说明 Java对象模型是指Java对象在虚拟机中的表现形式。 当我们在代码中使用…
多线程安全和性能问题
1. 线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以或得正确的结果,那么这个对象时线程安全的。 也就是说,当我们使用多线程访问某个对象的属性和方法时,不需…
了解线程属性,如何处理子线程异常
1. 线程有哪些常见属性? 线程名字(Name):让用户或者程序猿开发调试或运行中定位线程的问题等。 守护线程(isDaemon):当为true时,代表该线程为守护线程,false为非守护线程,也可以称作用户线程。 线程优先级(Priority):作用是告诉线程调度器,希望那个…
下一页
个人成就
文章被点赞
263
文章被阅读
72,222
掘力值
1,894
关注了
27
关注者
118
收藏集
3
关注标签
74
加入于
2019-06-14