首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
bug樱樱
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
2
文章 1
沸点 1
赞
2
返回
|
搜索文章
最新
热门
深入并发原理和大厂面试(一):AQS解析
AQS(AbstractQueuedSynchronizer)是Java众多锁以及并发工具的基础类,底层采用乐观锁,大量采用CAS操作保证其原子性,并且在并发冲突时,采用自旋方法重试。实现了轻量高效的获取锁。 1. AQS的关注点 ReentrantLock中使用到了AQS高并…
线程池(五):Executor框架解读实战
从代码上看,Executor 是一个简单的接口,但它却是整个异步任务执行框架的基础,这个框架能支持多种不同类型的任务执行策略。他提供了一种标准的方法将任务的提交过程和执行过程解耦开来,任务用 Runnable 来表示。Executor 基于生产者-消费者模式,提交任务的线程相当…
线程池(四):手写线程池实战
一、线程池实战例子项目背景:需要查出一百个用户的信息,并且给他们的邮箱发送邮件,打印出最终结果用户类任务类提供的服务类我们再来比较一下单线程情况下和多线程情况下相同的操作差别有多大我们最终会看到输出结
线程池(三):线程池排队机制
在Java中,如果每个任务都创建一个新的thread,开销是非常大的。除了创建和销毁线程的时间开销外,还消耗大量的系统资源。为了规避以上问题,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有的线程对象来进行服务,这就是线程池引入的原因。 …
线程池(二):线程池底层实现分析
创建一个可缓存的线程池,如果当前没有可用线程,在执行结束后缓存60s,如果不被调用则移除线程。调用execute()方法时可以重用缓存中的线程。适用于很多短期异步任务的环境,可以提高程序性能。
线程池(一):阻塞队列
Java线程在运行的声明周期中可能会处于6种不同的状态,这6种线程状态分别为如下所示。 • New:新创建状态。线程被创建,还没有调用 start 方法,在线程运行之前还有一些基础工作要做。 • Runnable:可运行状态。一旦调用start方法,线程就处于Runnable状…
站在巨人肩上操作CAS(三):原子操作类的正确使用实战
原子的意思是说“不能被进一步分割的粒子”,而原子操作是说“不可被终端的一个或多个系列的操作”。假定有两个操作A和B,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。 java中可以通过锁,锁机制的方式来实现原子操…
站在巨人肩上操作CAS(二):CAS带来的三大问题
因为CAS需要在操作值的时候,检查值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么CAS进行检查的时候发现它的值没有发生变化,但是实际上却变化了。ABA问题的解决思路就是使用版本号。在变量前面加上版本号,每次变量更新的时候把版本号加1…
站在巨人肩上操作CAS(一):CAS的原理
此时之前的线程就被挂起,加入到阻塞队列中,在一定的时间和条件下,通过调用 notify() 或 notifyAll() 唤醒,进入就绪状态(runnable),等待CPU调度。 导致其他所有需要锁的线程挂起,等待持有锁的线程释放锁,再次进行锁的竞争(公平锁 / 非公平锁)。 场…
线程的深入理解(三):ThreadLocal深入理解
对于 ThreadLocal 的使用,并不难。但要深入理解 ThreadLocal 的实现方式,需要细细揣摩。写本文前,我在网上看了很多关于 ThreadLocal 的分析,但却感到遗憾,因为很多文章存在着一定误区,包括一些大牛关于 ThreadLocal 内存溢出的讲解。更遗…
下一页
个人成就
文章被点赞
10
文章被阅读
7,263
掘力值
401
关注了
1
关注者
2
收藏集
0
关注标签
1
加入于
2020-12-01