首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Concurrency
订阅
TwuZhb
更多收藏集
微信扫码分享
微信
新浪微博
QQ
15篇文章 · 0订阅
Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”
乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。 乐观锁适…
Pratice Of Concurrency(一: BlockingQueue )
Java java.util.currency包中的BlockingQueue接口意味着线程可以在一个队列中添加和提取对象.在接下来的段落中,我们将学习如何使用BlockingQueue接口. BlockingQueue典型应用是用于一个线程生产对象,另一个线程消费对象. 一个…
死磕 java同步系列之AQS终篇(面试)
AQS的全称是AbstractQueuedSynchronizer,它的定位是为Java中几乎所有的锁和同步器提供一个基础框架。 在之前的章节中,我们一起学习了ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLat…
Synchronize和ReentrantLock区别
死锁的概念和产生死锁的根本原因是什么?死锁的预防策略中资源有序分配策略是什么。死锁发生的场景,死锁的危害,出现死锁需要满足条件分析,如何预防死锁,如何定位死锁,以及死锁修复方案分析等等 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个…
血洗多线程,抱得 offer 归
工作和面试之中,遇到了很多多线程问题。这里我总结了一下,希望对你有所帮助。本篇内容,基本上都是一些反例,有些很低级但常见。 当然,面试时拿来装逼用,也是极好的。 先来10个。 现象: 系统资源耗尽,进程僵死。 原因: 每次方法执行,都new一个线程池。 现象: 某个线程一直持有…
Java锁,真的有这么复杂吗?
运行上面代码,会发现输出flag的值不是理想中10000,虽然volatile写入时候会通知其他线程的工作内存值无效,从主内存重写读取。i++是三步操作,读取-赋值-写入不能保证原子性。原子性:不能被中断要么成功要么失败。 比如此时主内存的flag值10,线程1和线程2读取到自…
【嗅探底层】你知道Synchronized作用是同步加锁,可你知道它在JVM中是如何实现的吗?
我们可以利用synchronized关键字来对程序进行加锁。它既可以用来声明一个synchronized代码块,也可以直接标记静态方法或者实例方法。 当谈到synchronized时,我们有必要了解字节码中的monitorenter和monitorexit指令。 这两种指令均会…
浅谈AQS(抽象队列同步器)
抽象队列同步器,以下统称AQS,用于解决的就是多线程并发访问控制问题。在传统的多线程编程中,如果有多个线程需要访问同一个变量,就需要使用synchronized来为临界区加锁(临界区:访问共享资源的程序段),但是这种方式既不“优雅”,也不高效(即使Java为其已经做了很多优化)…
Java的volatile关键字详解
在学习ConcurrentHashMap源码的过程中,发现自己对并发编程简直是一无所知,因此打算从最基础的volatile开始学习. volatile虽然很基础,但是对于毫无JMM基础的我来说,也是十分晦涩,看了许多文章仍然不能很好的表述出来. 后来发现一篇文章(参考链接第一篇…
【肥朝】你的接口,真的能承受高并发吗?
好在这个并发问题的难度并不大,本篇案例排查非常适合小白入门,我们可以通过本地模拟场景重现,将问题范围缩小,从而逐步定位问题. 首先我们可以准备一个并发工具类,通过这个工具类,可以在本地环境模拟并发场景.手机查看代码并不友好,但是没关系,以下代码均是给你复制粘贴进项目重现问题用的…