问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

多线程:所有线程执行到一个地方才往下执行,怎么实现

发布网友 发布时间:2022-04-24 01:27

我来回答

1个回答

热心网友 时间:2023-10-18 11:32

主线程抛出一个子线程异步处理一些东西,这时主线程要等待子线程运行完成再完成(其实我是为了统计运行时间的)。
这里抛出的子线程可能递归的调用自己,就是再抛一个他的子线程出来,但是到底一共抛多少,事先是不知道的。
应用场景:1)多线程扫描文件夹内的文件,遇到文件夹内有子文件夹,要递归调用扫描线程的,等到全部扫描完成后,返回结果,显示;
2)多线程快速排序,第一次肯定是单线程的,第一次排序完成后,会分两半,这两半多线程排,递归调用了这个排序线程,这两半很有可能,极大有可能再各分两半,也就是会有4个子线程的子线程再排序。
我试过网上的那个 CountDownLatch ,但是他只能实现定义好子线程的数量,但是在以上两种情景下,事先你是不知道会有多少个子线程的!
PS:在某种需求中,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择CyclicBarrier了。这个貌似也要在开始的时候设定总线程数:CyclicBarrier(int parties)
这个和countDownLatch就差不多了呢!
你觉得呢 问题补充:niuzai 写道亲,CyclicBarrier可能是你想要的。
PS:在某种需求中,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择CyclicBarrier了。我再来看看~~试试看! 问题补充:niuzai 写道亲,CyclicBarrier这个东东是可以动态重置个数的,而countDownLatch是一次性的。只不过大多数例子CyclicBarrier初始化了个数罢了,实质上它是可以动态改变的~ 嗯 我试了下,多线程快排,小数据量还好,顺利执行了,但是数多了后,会建N多线程等待,会outofmemory,呵呵!
不过证明这个方法是可以的! 问题补充:niuzai 写道亲,那你就结合线程池操作,设置线程数目上限。不要每个任务就产生一个线程咯~ 产生新的线程是很耗内存的,线程太多当然就内存溢出咯~嗯 你说的很对!要结合线程池的!

热心网友 时间:2023-10-18 11:32

主线程抛出一个子线程异步处理一些东西,这时主线程要等待子线程运行完成再完成(其实我是为了统计运行时间的)。
这里抛出的子线程可能递归的调用自己,就是再抛一个他的子线程出来,但是到底一共抛多少,事先是不知道的。
应用场景:1)多线程扫描文件夹内的文件,遇到文件夹内有子文件夹,要递归调用扫描线程的,等到全部扫描完成后,返回结果,显示;
2)多线程快速排序,第一次肯定是单线程的,第一次排序完成后,会分两半,这两半多线程排,递归调用了这个排序线程,这两半很有可能,极大有可能再各分两半,也就是会有4个子线程的子线程再排序。
我试过网上的那个 CountDownLatch ,但是他只能实现定义好子线程的数量,但是在以上两种情景下,事先你是不知道会有多少个子线程的!
PS:在某种需求中,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择CyclicBarrier了。这个貌似也要在开始的时候设定总线程数:CyclicBarrier(int parties)
这个和countDownLatch就差不多了呢!
你觉得呢 问题补充:niuzai 写道亲,CyclicBarrier可能是你想要的。
PS:在某种需求中,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择CyclicBarrier了。我再来看看~~试试看! 问题补充:niuzai 写道亲,CyclicBarrier这个东东是可以动态重置个数的,而countDownLatch是一次性的。只不过大多数例子CyclicBarrier初始化了个数罢了,实质上它是可以动态改变的~ 嗯 我试了下,多线程快排,小数据量还好,顺利执行了,但是数多了后,会建N多线程等待,会outofmemory,呵呵!
不过证明这个方法是可以的! 问题补充:niuzai 写道亲,那你就结合线程池操作,设置线程数目上限。不要每个任务就产生一个线程咯~ 产生新的线程是很耗内存的,线程太多当然就内存溢出咯~嗯 你说的很对!要结合线程池的!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...赵高指鹿为马、燕昭王以千金买千里骨马、田忌赛马的故事!_百度... 什么是草花? 草花是怎么用的? Rio和锐澳是一家吗 锐澳公司介绍 暧昧期间出去吃饭应该谁买单啊? 一般女方出走几天男方能起诉离婚 女生戴什么水晶手链好1992年出生的 送女生手链时怎么说才浪漫(蓝水晶),就比如像钻石是女人最好的朋友之类... 新民晚报杯足球赛市级总赛事组委会电话 java多线程在互联网公司的应用场景是什么 谁能举几个使用多线程,多进程场景的例子 python多线程编程:守护线程的使用场景及特点 java多线程有哪些实际的应用场景 什么是多线程?项目中怎么应用?工作中在哪些场景应用? 联通的主卡最多可办理几张开通eSIM副卡? esim副卡流量超了怎么收费的? 电信副卡能开通esim吗? 联通的eSIM主副卡业务是什么? 联通的eSIM主副卡业务副卡套餐是立即生效吗? 黑龙江联通安卓手表eSIM独立号码可以添加副卡吗? 电信副卡能开通esim吗 开通中国联通esim主副卡业务亲情卡需要人脸识别吗,一卡双终端呢? 电信esim占用副卡数量 esim独立号码副卡资费需要单独收费吗? 联通esim卡的收费标准是什么? esim副卡套餐是立即生效吗? 联通主卡可办理几张开通eSIM副卡? 副卡为什么不能开esim eSIM主副卡业务是什么? JAVA项目中哪些场景需要用到多线程,深感迷茫,请使用过的高手指点。 Java项目里哪些场景适合使用单线程,哪些场景适合使用多线程? Java的线程在项目中一般会有什么具体的应用? java电商项目,什么场景需要使用多线程 简述异步和多线程的区别及两者的使用场景 Python 进程,线程,协程,锁机制,你知多少 任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行 多线程为什么会说是鸡肋 华为荣耀畅玩8C有分身功能吗 如何实现主线程需要等待子线程的结果,然后才能往下执行 闪迪卡上的A1是什么意思 儿童心理疾病表现有哪些 如何防治儿童常见的心理疾病 儿童常见的心理疾病有哪些 常见有哪些儿童心理疾病 儿童常见的心理问题有哪些? 常见的儿童心理疾病有哪些? 幼儿心理常见的心理问题包括什么 流量节流是什么意思 儿童、青少年常见的心理健康问题有哪些? “开源“和”节流”哪个更重要