python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...
面试官:如让线程顺序执行?
我:使用Thread的join方法。
面试官:除了join还有别的办法吗?
我:目前只用过join。
面试官:哦,那你了解CountDownLatch吗?
我:不了解,没使用过。
面试中被问到线程顺序执行,相信大家都能答出来join,但是除了join还有其他的办法,不知道大家了解不。我这里分享下3种方式。
第一种:join
join方式
第二种:线程池
通过Executors.newSingleThreadExecutor()来实现(这里可以看我的《面试官问你java都有哪些线程池,自己是否自定义过线程池》)
线程池
第三种:通过CountDownLatch实现
CountDownLatch
这3种方式哪种比较好,我个人认为还是CountDownLatch,因为他的粒度更细,比如我上面的例子,t2线程执行一半,t3线程就可以执行,通过join和线程池都实现不了。而通过CountDownLatch可以实现,如图:
CountDownLatch细粒度
总结:
选择使用什么样的方式,取决于你的需求,如果你只是想顺序的执行那join和线程池都可以使用,因为这2种方式比较简单。如果需求是细粒度的,比如线程1执行到某个部分,线程2就得执行,就使用CountDownLatch。但是使用它时,一定要理清逻辑,不然可能await方法会阻塞。
python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...相关推荐
- 为什么重新new两个线程线程号相同_面试官每次问我关于线程间通信方法,我都回答的很糟糕...
线程的生命周期 废话不多写.首先我们先回顾回顾,理解下线程的生命周期,以及不同的阶段的区别: 新建状态(NEW) 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配 ...
- redis为什么是单线程_面试官:Redis单线程为什么执行效率这么高?
点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇回顾: 面试官:Redis为什么设计成单线程的 ...
- java进程内存一直没释放_面试官:一个线程OOM,进程里其他线程还能运行么?...
引言 这题是一个网友@大脸猫爱吃鱼给我的提问,出自今年校招美团三面的一个真题.大致如下 一个进程有3个线程,如果一个线程抛出oom,其他两个线程还能运行么? 先说一下答案,答案是还能运行 不瞒大家说, ...
- hashmap为什么线程不安全_面试官:你说 HashMap 线程不安全,它为啥不安全呢?...
扫描下方海报 试读 本文来源: http://cnblogs.com/developer_chan/p/10450908.html 我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但 ...
- 在c#中用mutex类实现线程的互斥_面试官经常问的synchronized实现原理和锁升级过程,你真的了解吗...
本篇文章主要从字节码和JVM底层来分析synchronized实现原理和锁升级过程,其中涉及到了简单认识字节码.对象内部结构以及ObjectMonitor等知识点. 阅读本文之前,如果大家对synch ...
- sqlserver2008未将对象引用设置到对象的实例_面试官:ThreadLocal 的内存泄漏是弱引用导致的,你确定?...
面试官:ThreadLocal 了解吗? Python 小星:线程局部变量,多线程下能保证各个线程的变量相对独立于其他线程的变量. 面试官:那你说下它是如何保证线程隔离的? Python 小星:每个线 ...
- 面试官再问线程池,你这样谈谈线程的回收,好感会倍增!
来源 | https://www.cnblogs.com/kingsleylam/p/11241625.html 最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流 ...
- java 面试题 由浅入深_面试官由浅入深的面试套路
阅读文本大概需要3分钟. 从上图看来面试官面试是有套路的,一不小心就一直被套路. 0x01:Thread 面试官 :创建线程有哪几种方式? 应聘者 :继承Thread类.实现Runable接口.使用j ...
- python工资一般多少大专学历-这个面试官真霸气 不收大专程序员
原标题:这个面试官真霸气 不收大专程序员 开发者报 | 面试官当面撕程序员简历:大专生我们不收! 1.面试官当面撕程序员简历:大专生我们不收! 一名程序员发帖讲述了自己最近的一次面试被面试官撕掉简历的 ...
最新文章
- Knuth(佩服的一塌糊涂)
- 【Flutter】Future 与 FutureBuilder 异步编程代码示例 ( FutureBuilder 构造函数设置 | 处理 Flutter 中文乱码 | 完整代码示例 )
- rand函数的使用方法php,PHP array_rand()函数 使用基础教程
- linux socket 详解
- Iterator迭代器原理
- java代码大全_各种java技术文章汇总整理
- 三个子系统_「正点原子Linux连载」第五十八章Linux INPUT子系统实验(一)
- linux那些事之page fault(AMD64架构)(user space)(2)
- Spring Boot Starter 常用列表
- [ JAVA编程 ] double类型计算精度丢失问题及解决方法
- linux 内核优化实战,Linux编译优化必须掌握的几个姿势总结
- Arcgis Javascript那些事儿(八)--图层获取与图层顺序
- python中什么具有去重功能_python中去重的方法
- HTML5线性图表 图表数据区域可着色
- qlabel显示图片同时鼠标点击画线_怎样将CAJ文档转成JPG图片?
- Struts+Hibernate系列教材 (一)- 整合Struts和Hibernate教程
- tcs标准编写软件_标准编写软件TCS应用.ppt
- FTTP/FTTH理想解决方案(组图)
- android 解析json 日期格式,处理Json数据中的日期类型.如/Date(1415169703000)/格式
- 『Java CVE』CVE-2022-34169: Xalan-J XSLT整数截断漏洞PoC结构再浅析