首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Juc
订阅
詹姆斯成都分斯
更多收藏集
微信扫码分享
微信
新浪微博
QQ
49篇文章 · 0订阅
【高并发】:为什么局部变量是线程安全的?
多个线程同时访问共享变量时,会导致并发问题。那么,如果将变量放在方法内部,是不是还会存在并发问题呢?如果不存在并发问题,那么为什么不会存在并发问题呢? 记得上学的时候,我们都会遇到这样一种题目,打印斐波那契数列。斐波那契数列是这样的一个数列:1、1、2、3、5、8、13、21、…
StampedLock 读写锁中的最强王者
一种基于能力的锁,具有三种模式用于控制读/写访问。 StampedLock的状态由版本和模式组成。 锁定采集方法返回一个表示和控制相对于锁定状态的访问的印记; 这些方法的“尝试”版本可能会返回特殊值为零以表示获取访问失败。 锁定释放和转换方法要求stamps作为参数,如果它们与…
自旋锁的介绍,手写一个简单的自旋锁
非自旋锁在获取不到锁的时候会进入阻塞状态,从而进入内核态,当获取到锁的时候需要从内核态恢复,需要线程上下文切换。 (线程被阻塞后便进入内核(Linux)调度状态,这个会导致系统在用户态与内核态之间来回切换,严重影响锁的性能) 1. 如果某个线程持有锁的时间过长,就会导致其它等待…
怎么才算掌握了JDK中的线程池
怎么才算掌握了JDK中的线程池JDK并发包下面的线程池是面试中经常被考查的点,之前我写过一篇ThreadPoolExecutor源码分析的文章。因为篇幅有限当时没说面试中常见的考查点和哪些点是应该掌握
突击并发编程JUC系列-原子引用AtomicReference
小伙伴们,大家好,我们又见面了,突击并发编程 JUC 系列实战原子引用马上就要发车了。 AtomicReference 类提供了对象引用的非阻塞原子性读写操作,对比原子更新基本类型的 AtomicInteger ,只能更新一个变量,如果要原子更新多个变量,就需要使用这个原子更新…
「面试」拿到B站的意向书
当一个线程在获取锁的时候,如果这个锁已经被其他线程获取,那么这个线程不会破门而入,而是循环等待,但是嗷嗷待哺,需要不断地嗷嗷叫判断锁是否被成功获取,直到获取到锁才会退出循环。 如果某个线程拿着锁死不放手,其他线程没法拿到这把锁,只好等待获取锁的线程进入循环等待的状态,等待不是睡…
ThreadLocal详解
ThreadLocal在《Java核心技术 卷一》中被称作线程局部变量(PS:关注公众号itweknow,回复“Java核心技术”获取该书),我们可以利用ThreadLocal创建只能由同一线程读和写的变量。因此就算两个线程正在执行同一段代码,并且这段代码具有对ThreadLo…
为什么start方法才能启动线程,而run不行?
我们都知道,一个线程直接对应了一个Thread对象,在刚开始学习线程的时候我们也知道启动线程是通过start()方法,而并非run()方法。 一看到native我就想起了JNI,registerNatives()实际上就是java方法和C/C++的函数对应。在首次加载的时候就会…
Java并发系列 — 阻塞队列(BlockingQueue)
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。 支持阻塞的移除方法:当队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于生产者和…
常用阻塞队列 BlockingQueue 有哪些?
为什么要使用阻塞队列之前,介绍了一下ThreadPoolExecutor的各参数的含义(并发编程之线程池ThreadPoolExecutor),其中有一个BlockingQueue,它是一个阻塞队列。