首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
多线程
订阅
冷叶
更多收藏集
微信扫码分享
微信
新浪微博
QQ
9篇文章 · 0订阅
CountDownLatch和CyclicBarrier 傻傻的分不清?超长精美图文又来了
并发编程的三大核心是分工,同步和互斥。在日常开发中,经常会碰到需要在主线程中开启多个子线程去并行的执行任务,并且主线程需要等待所有子线程执行完毕再进行汇总的场景,这就涉及到分工与同步的内容了 其实现原理是不停的检查 join 线程是否存活,如果 join 线程存活,则 wait…
AQS源码详解
AQS(AbstractQueuedSynchronizer)核心思想是:如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制 AQS 是用 …
原生线程池这么强大,Tomcat 为何还需扩展线程池?
Tomcat/Jetty 是目前比较流行的 Web 容器,两者接受请求之后都会转交给线程池处理,这样可以有效提高处理的能力与并发度。JDK 提高完整线程池实现,但是 Tomcat/Jetty 都没有直接使用。Jetty 采用自研方案,内部实现 QueuedThreadPool …
线程池中你不容错过的一些细节
上周分享了一篇《一个线程罢工的诡异事件》,最近也在公司内部分享了这个案例。 我自己确实也没讲清楚,之前画的那张图还需要再完善,有些误导。 第二还是大家对线程池的理解不够深刻,比如今天要探讨的内容。 首先还是来复习下线程池的基本原理。 我认为线程池它就是一个调度任务的工具。 众所…
一时技痒,撸了个动态线程池,源码放Github了
线程池在日常工作中用的还挺多,当需要异步,批量处理一些任务的时候我们会定义一个线程池来处理。 在使用线程池的过程中有一些问题,下面简单介绍下之前遇到的一些问题。 场景一:实现一些批量处理数据的功能,刚开始线程池的核心线程数设的比较小,然后想调整下,只能改完后重启应用。 场景二:…
异步编程之CompleTableFuture
所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 在并发时代,我们常用多线程来进行异步编程,但是多线…
从源码的角度再学「Thread」
Java中的线程是使用Thread类实现的,Thread在初学Java的时候就学过了,也在实践中用过,不过一直没从源码的角度去看过它的实现,今天从源码的角度出发,再次学习Java Thread,愿此后对Thread的实践更加得心应手。 Thread提供了非常灵活的重载构造方法,…
Java并发编程:Java线程池核心ThreadPoolExecutor的使用和原理分析
线程是并发编程的基础,前面的文章里,我们的实例基本都是基于线程开发作为实例,并且都是使用的时候就创建一个线程。这种方式比较简单,但是存在一个问题,那就是线程的数量问题。 假设有一个系统比较复杂,需要的线程数很多,如果都是采用这种方式来创建线程的话,那么就会极大的消耗系统资源。首…
线程的缓存何时刷新?
曾经有遇到过这样一个问题,有一个共享变量keepRunning=true,线程A中执行while (keepRunning);,线程B中执行keepRunning = false;,在main函数中同时开启A,B线程,然后会发现程序会一直运行且不会退出。说白了这其实就是一个典型…