首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
java-并发
订阅
songjiesdnu
更多收藏集
微信扫码分享
微信
新浪微博
QQ
8篇文章 · 0订阅
Java 并发高频面试题:聊聊你对 AQS 的理解?
在Java多线程编程中,重入锁(ReentrantLock) 和信号量(Semaphore)是两个极其重要的并发控制工具。相信大部分读者都应该比较熟悉它们的使用(如果不清楚的小伙伴,赶快拿出书本翻阅一下)。 但是不知道大家是不是有了解过重入锁和信号量的实现细节? 我就带大家看一…
关闭线程池的正确姿势,shutdown(), shutdownNow()和awaitTermination() 该怎么用?
ExecutorService 接口提供了三个方法用于手动关闭线程池,分别是shutdown(),shutdownNow()和awaitTermination()。我们最经常使用的 ThreadPoolExecutor 正是 ExecutorService 的实现类,自然也实现…
美团后台篇中的ReentrantLock
上面的代码就是非公平锁加锁的方法。主要是做了两点: 线程设置为独占线程。 Acquire 方法进行后续处理。 如果设置同步状态失败,则会进入到对应的acquire()方法中去进行加锁处理。而acquire()无论是非公平锁或公平锁,最后调用的都是父类中的方法。 图中有颜色的为 …
并发编程基础知识
一. 并发编程的问题 1. 微观剖析并发编程的问题 可见性: 一个线程对共享变量的修改,另一个线程能够立刻看到。 有序性: 程序按照代码的先后顺序执行。 原子性: 一个或者多个操作在CPU执行过程中不被中断。 2. Java解决并发问题的方法 volatile(解决可见性问题)…
从锁的思想到Java主流锁分析
悲观锁认为自己在使用数据时一定存在其他线程在修改数据,所以它在使用数据前会先加上锁,待到使用完毕释放锁资源。Java中,synchronized关键字和Lock的实现类都属于悲观锁。 反之乐观锁则认为在使用数据时不会有线程修改数据,所以它不会添加锁,只是在更新数据时判断是否有线…
java并发编程系列:牛逼的AQS(下)
看完了AQS中的底层同步机制,我们来简单分析一下之前介绍过的ReentrantLock的实现原理。先回顾一下这个显式锁的典型使用方式: ReentrantLock首先是一个显式锁,它实现了Lock接口。可能你已经忘记了Lock接口长啥样了,我们再回顾一遍: 也就是当一个线程因为…
java并发编程系列:牛逼的AQS(上)
设计java的大叔们为了我们方便的自定义各种同步工具,为我们提供了大杀器AbstractQueuedSynchronizer类,这是一个抽象类,以下我们会简称AQS,翻译成中文就是抽象队列同步器。这家伙老有用了,封装了各种底层的同步细节,我们程序员想自定义自己的同步工具的时候,…
求求你不要再问我重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁 ---- 不看后悔系列
重量级锁?自旋锁?自适应自旋锁?轻量级锁?偏向锁?悲观锁?乐观锁?执行一个方法咋这么辛苦,到处都是锁。 今天这篇文章,给大家普及下这些锁究竟是啥,他们的由来,他们之间有啥关系,有啥区别。 如果你学过多线程,那么你肯定知道锁这个东西,至于为什么需要锁,我就不给你普及了,就当做你是…