首页
首页
沸点
课程
直播
活动
竞赛
商城
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,它是一个阻塞队列。