首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
并发
订阅
无敌小圈圈
更多收藏集
微信扫码分享
微信
新浪微博
QQ
18篇文章 · 0订阅
[Java多线程 -2]:由浅入深看synchronized的底层实现原理
前俩篇文章,我们聊了聊线程/进程的概念,接着简单串了一下同步的方式方法。今天我们就单拎出来synchronized,好好捋一捋它的前世今生。 MDove:没错,接下来。我会从常见的synchronized加锁方式入手;引出Java对象在内存的布局,以及锁的存放位置;然后看一看锁…
Java线程池ThreadPoolExecutor实现原理剖析 #28
在Java中,使用线程池来异步执行一些耗时任务是非常常见的操作。最初我们一般都是直接使用new Thread().start的方式,但我们知道,线程的创建和销毁都会耗费大量的资源,关于线程可以参考之前的一片博客Java线程那点事儿, 因此我们需要重用线程资源。 继承结构看起来很…
java多线程系列:ThreadPoolExecutor
好了要开始编了,从图片中就可以看到这篇博文的主题了,ThreadPoolExecutor自定义线程池。 这个参数表示线程池中的基本线程数量也就是核心线程数量。 这个参数是线程池中允许创建的最大线程数量,当使用有界队列时,且队列存放的任务满了,那么线程池会创建新的线程(最大不会超…
Java中实现多线程的3种方法介绍和比较
单进程单线程:一个人在一个桌子上吃菜。 单进程多线程:多个人在同一个桌子上一起吃菜。 多进程单线程:多个人每个人在自己的桌子上吃菜。 多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了。资源共享就会发生冲突…
线程池ThreadPoolExecutor整理
keepAliveTime 超时时间 线程池中当前的空闲线程服务完某任务后的存活时间。如果时间足够长,那么可能会服务其它任务 unit 时间单位 workQueue 阻塞队列 线程数大于核心线程后放到队列中 threadFactory 线程池工厂 handler 拒绝策略 阻塞…
Semaphore源码分析
Semaphore有两种模式,公平模式和非公平模式。公平模式就是调用acquire的顺序就是获取许可证的顺序,遵循FIFO;而非公平模式是抢占式的,也就是有可能一个新的获取线程恰好在一个许可证释放时得到了这个许可证,而前面还有等待的线程。 从上面可以看到两个构造方法,都必须提供…
Java 8 并发教程:同步和锁
这份指南将会以简单易懂的代码示例来教给你如何在 Java8 中进行并发编程。这是一系列教程中的第二部分。在接下来的 15 分钟,你将会学会如何通过同步关键字,锁和信号量来同步访问共享可变变量。
Java并发工具类(闭锁CountDownLatch)
闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。 CountDownLatch是一种灵活的闭锁实现,它可以使一个或者多个线程等待一组事件的发生。 闭锁状态包含一个计数器,该计数器被初始化为一个正数,表示需要等待的事件数量。countDown方法递减计数器,表示已经有…
Java信号量Semaphore详解
Semaphore实现为一种基于计数的信号量,Semaphore管理着一组虚拟的许可集合,这种许可可以作为某种凭证,来管理资源,在一些资源有限的场景下很有实用性,比如数据库连接,应用可初始化一组数据库连接,然后通过使用Semaphore来管理获取连接的许可,任何线程想要获得一个…
Java锁之ReentrantReadWriteLock
上面就是读写锁的获取和释放过程源码,先分析简单的非阻塞获取锁方法,根据源码我们可以知道,写锁和读锁的是否获取也是判断状态是否不为0,写锁的状态获取方法是exclusiveCount(c),读锁的状态获取方法是sharedCount(c)。那么我们接下来分析下这两个方法是如何对统…