
并发案例
并发相关知识点和一些代码案例
宁待227
这个作者很懒,什么都没留下…
展开
-
Countdown控制线程同时开始执行
不是同时启动的,但是线程都会阻塞在latch.await这里,直到最后一层循环,latch.countdown所有的线程被唤醒开始执行。原创 2024-05-09 09:11:47 · 160 阅读 · 0 评论 -
多线程交替打印ABC(共享变量)
注意如果不满足条件要及时让出CPU,防止陷入死循环。原创 2024-05-09 09:46:22 · 275 阅读 · 0 评论 -
仿写一个线程池
run和start是不同的,start会开启一个新线程,但是run就等同于调用了普通方法,并不会开启新线程。核心线程数: 提交一个任务到线程池的时候,线程池会创建工作线程执行任务,即使其他核心线程空闲也会创建,直到达到核心线程数。如果任务队列满了,并且已创建的线程数小于最大线程数,就会创建新的线程加速消耗。总结: 有任务过来先给到核心线程,核心线程处理不过来,就交给队列,队列满了,就开启最大线程数来加速消耗。3.线程池是不是满了。即使一个任务提交时线程是空闲状态,只要是没达到核心线程数,就会创建新线程。原创 2024-03-12 09:50:26 · 357 阅读 · 0 评论 -
Future计算某盘符文件夹数量
------------------------------------------手动分割线-------------------------------------------------任务没有执行完,会阻塞到get方法,只有执行完返回结果,才会解除阻塞往下执行。计算前20个文件夹中文件数量。原创 2024-05-08 23:40:19 · 241 阅读 · 0 评论 -
线程池和CountDownLatch搭配使用
在本人所从事的项目中就有类似的情况,因为我们使用的图片服务只提供了获取单个图片的功能,而每次获取图片的时间不等,一般都需要1.5s~2s。场景一:CountDownLatch 非常适合于对任务进行拆分,使其并行执行,比如某个任务执行2s,其对数据的请求可以分为五个部分,那么就可以将这个任务拆分为5个子任务,分别交由五个线程执行,执行完成之后再由主线程进行汇总,此时,总的执行时间将决定于执行最慢的任务,平均来看,还是大大减少了总的执行时间。的计数值,当计数值减到0时,所有等待的线程都会被唤醒。原创 2024-05-05 20:01:32 · 1284 阅读 · 1 评论