首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
教主陈
掘友等级
thoughtworks
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
10
文章 10
沸点 0
赞
10
返回
|
搜索文章
最新
热门
ThreadLocal源码分析
我们Threadlocal类的作用是提供一个线程间隔离,线程内部共享的数据。今天我们一起看看TreadLocal是怎么做到线程隔离的。 原来threadLocal set value的时候,首先获得当前的线程对象,然后得到线程对象的ThreadLocalMap属性,然后将thr…
CompletableFuture源码分析
CompletableFuture是1.8加入的异步处理的Future,我们知道之前有个Future接口,但调用future.get方法时,主线程会阻塞,有时还是影响性能,能不能给你个回调函数处理完后接着处理就好。CompletableFuture就这样诞生了。 上面简单看了C…
ReentrantReadWriteLock源码分析
ReentrantReadWriteLock是一个可重入的读写锁,写锁独占,读锁共享,支持公平和非公平两种方式加锁,源码可以看到,内部的Sync类重写了AQS中的tryAcquire,tryAcquireShared方法已经对应的释放方法。 独占式锁和共享式锁都已经分析很多了,…
ForkJoinPool源码分析
ForkJoinPool是Doug Lea 在JDK 1.7后加入的,为了充分利用多核CPU的计算能力,采用分治算法,创建多个线程、多个队列,使用不同线程处理不同的队列,且处理完自己的任务后,还会窃取其他线程的任务,达到充分使用CPU的目的。ForkJoinPool有很多使用场…
ScheduledThreadPoolExecutor 源码分析
ScheduledThreadPoolExecutor是执行定时调度的线程池,它是ThreadPoolExecutor的子类。今天我们就一起看看ScheduledThreadPoolExecutor的源码,测试例子还是在github中。 可以看到ScheduledThreadP…
ThreadPoolExecutor submit和execute方法的区别
execute:1.只能提交Runnable接口的对象,我们知道Runnable接口的run方法是没有返回值的。2.execute方法提交的任务异常是直接抛出的 submit: 1.可以提交Runnable也可以提交Callable对象,即可以有返回值,也可以没有。2.subm…
ThreadPoolExecutor 源码分析
我们知道Doug Lea为了方便我们开发,在Executors类里提供了很多方法方便我们创建不同类型的线程,但阿里开发规范又强制禁止使用newCachedThreadPool等方法,原因是Executors里的线程池要么是无界队列,要么是无限线程,任务瞬间爆发到来的时候,会造成…
线程池简介
线程池就是提前创建若干个线程,如果有任务需要处理,线程池里的线程就会处理任务,处理完之后线程并不会被销毁,而是等待下一个任务。由于创建和销毁线程都是消耗系统资源的,所以当你想要频繁的创建和销毁线程的时候就可以考虑使用线程池来提升系统的性能。 降低资源消耗:通过重复利用已创建的线…
ArrayBlockingQueue源码分析
ArrayBlockingQueue使用数组实现的有界阻塞队列,初始化是必须指定容量。是FIFO先进先出队列,支持公平锁和非公平锁。 可以看到构造方法必须传入capacity,这个参数时什么意思?这个参数就是数组的容量,即数组只能容纳这么多节点,如果超过容量怎么办?根据前面阻塞…
LinkedBlockingQueue源码分析
LinkedBlockingQueue用链表实现的有界阻塞队列,初始化时如果没有传入容量,则容量时Intger.MAX_VALUE,是FIFO队列,因为入队和出队方法各是一把锁,所以一般情况下并发性能优于ArrayBlockingQueue。本篇一起来看源码,LinkedBlo…
下一页
个人成就
文章被点赞
16
文章被阅读
30,617
掘力值
706
关注了
13
关注者
12
收藏集
0
关注标签
4
加入于
2019-08-12