面试官:如让线程顺序执行?

我:使用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,还有其他办法吗?...相关推荐

  1. 为什么重新new两个线程线程号相同_面试官每次问我关于线程间通信方法,我都回答的很糟糕...

    线程的生命周期 废话不多写.首先我们先回顾回顾,理解下线程的生命周期,以及不同的阶段的区别: 新建状态(NEW) 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配 ...

  2. redis为什么是单线程_面试官:Redis单线程为什么执行效率这么高?

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇回顾: 面试官:Redis为什么设计成单线程的 ...

  3. java进程内存一直没释放_面试官:一个线程OOM,进程里其他线程还能运行么?...

    引言 这题是一个网友@大脸猫爱吃鱼给我的提问,出自今年校招美团三面的一个真题.大致如下 一个进程有3个线程,如果一个线程抛出oom,其他两个线程还能运行么? 先说一下答案,答案是还能运行 不瞒大家说, ...

  4. hashmap为什么线程不安全_面试官:你说 HashMap 线程不安全,它为啥不安全呢?...

    扫描下方海报 试读 本文来源: http://cnblogs.com/developer_chan/p/10450908.html 我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但 ...

  5. 在c#中用mutex类实现线程的互斥_面试官经常问的synchronized实现原理和锁升级过程,你真的了解吗...

    本篇文章主要从字节码和JVM底层来分析synchronized实现原理和锁升级过程,其中涉及到了简单认识字节码.对象内部结构以及ObjectMonitor等知识点. 阅读本文之前,如果大家对synch ...

  6. sqlserver2008未将对象引用设置到对象的实例_面试官:ThreadLocal 的内存泄漏是弱引用导致的,你确定?...

    面试官:ThreadLocal 了解吗? Python 小星:线程局部变量,多线程下能保证各个线程的变量相对独立于其他线程的变量. 面试官:那你说下它是如何保证线程隔离的? Python 小星:每个线 ...

  7. 面试官再问线程池,你这样谈谈线程的回收,好感会倍增!

    来源 | https://www.cnblogs.com/kingsleylam/p/11241625.html 最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流 ...

  8. java 面试题 由浅入深_面试官由浅入深的面试套路

    阅读文本大概需要3分钟. 从上图看来面试官面试是有套路的,一不小心就一直被套路. 0x01:Thread 面试官 :创建线程有哪几种方式? 应聘者 :继承Thread类.实现Runable接口.使用j ...

  9. python工资一般多少大专学历-这个面试官真霸气 不收大专程序员

    原标题:这个面试官真霸气 不收大专程序员 开发者报 | 面试官当面撕程序员简历:大专生我们不收! 1.面试官当面撕程序员简历:大专生我们不收! 一名程序员发帖讲述了自己最近的一次面试被面试官撕掉简历的 ...

最新文章

  1. Knuth(佩服的一塌糊涂)
  2. 【Flutter】Future 与 FutureBuilder 异步编程代码示例 ( FutureBuilder 构造函数设置 | 处理 Flutter 中文乱码 | 完整代码示例 )
  3. rand函数的使用方法php,PHP array_rand()函数 使用基础教程
  4. linux socket 详解
  5. Iterator迭代器原理
  6. java代码大全_各种java技术文章汇总整理
  7. 三个子系统_「正点原子Linux连载」第五十八章Linux INPUT子系统实验(一)
  8. linux那些事之page fault(AMD64架构)(user space)(2)
  9. Spring Boot Starter 常用列表
  10. [ JAVA编程 ] double类型计算精度丢失问题及解决方法
  11. linux 内核优化实战,Linux编译优化必须掌握的几个姿势总结
  12. Arcgis Javascript那些事儿(八)--图层获取与图层顺序
  13. python中什么具有去重功能_python中去重的方法
  14. HTML5线性图表 图表数据区域可着色
  15. qlabel显示图片同时鼠标点击画线_怎样将CAJ文档转成JPG图片?
  16. Struts+Hibernate系列教材 (一)- 整合Struts和Hibernate教程
  17. tcs标准编写软件_标准编写软件TCS应用.ppt
  18. FTTP/FTTH理想解决方案(组图)
  19. android 解析json 日期格式,处理Json数据中的日期类型.如/Date(1415169703000)/格式
  20. 『Java CVE』CVE-2022-34169: Xalan-J XSLT整数截断漏洞PoC结构再浅析

热门文章

  1. java有理数类的封装_java实验报告有理数的类封装.doc
  2. matlab 替换指定的元素
  3. Python应用实战- 爬虫基础入门知识必会
  4. java 不定参数方法_java中不定长参数的使用方法
  5. 疫情期间,在家使用java的SSH框架实现一个简单的任务调度系统
  6. 111邮箱服务器设置,如何设置Outlook邮箱帐号
  7. nginx 正则 结尾 配置_nginx正则配置解释多用于伪静态规则
  8. 【Python】[02]初识Python
  9. django QuerySet对象转换成字典对象
  10. Hadoop HA集群的搭建