本文主要记录一下leetcode多线程之按序打印

题目

我们提供了一个类:public class Foo {  public void first() { print("first"); }  public void second() { print("second"); }  public void third() { print("third"); }}​三个不同的线程将会共用一个 Foo 实例。​    线程 A 将会调用 first() 方法    线程 B 将会调用 second() 方法    线程 C 将会调用 third() 方法​请设计修改程序,以确保 second() 方法在 first() 方法之后被执行,third() 方法在 second() 方法之后被执行。​来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/print-in-order著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

使用juc包的CountDownLatch

class Foo {​    CountDownLatch second = new CountDownLatch(1);    CountDownLatch third = new CountDownLatch(1);​    public Foo() {            }​    public void first(Runnable printFirst) throws InterruptedException {        printFirst.run();        second.countDown();            }​    public void second(Runnable printSecond) throws InterruptedException {        second.await();        printSecond.run();        third.countDown();    }​    public void third(Runnable printThird) throws InterruptedException {        third.await();        printThird.run();    }}

小结

这里是固定要按first先执行,而后second,再third方法,这里使用了CountDownLatch,比起object的wait notify之类用起来简单一点

doc

  • print-in-order

leetcode 打印_leetcode多线程之按序打印相关推荐

  1. LeetCode 多线程 1114. 按序打印

    1114. 按序打印 Ideas 并发执行问题是多线程要解决的经典问题,此题是典型的执行屏障问题,因此我们需要构造几把锁来确保执行顺序. 题目要求按顺序依次执行三个方法,为了保证线程的执行顺序,可以在 ...

  2. (多线程)leetcode1114. 按序打印 认识AtomicInteger

    我们提供了一个类: public class Foo {   public void one() { print("one"); }   public void two() { p ...

  3. 1114. 按序打印

    1114. 按序打印 我们提供了一个类: public class Foo { public void first() { print("first"); } public voi ...

  4. 多线程和单线程 打印数字到100000 的速度对比

    import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executors; import java.u ...

  5. 【LeetCode】剑指 Offer 17. 打印从1到最大的n位数

    [LeetCode]剑指 Offer 17. 打印从1到最大的n位数 文章目录 [LeetCode]剑指 Offer 17. 打印从1到最大的n位数 一.大数 一.大数 将 1~9 加入队列 对队列中 ...

  6. 【多线程】给三个字母a、l、i,采用多线程的方式打印alialialiali。。。

    目录 1. 题目 2. 解析 1. 使用ReetrankLock和Condition 1. 思路 2. 代码实现 3. 控制台 2. 使用synchronized和AtomicInteger配合 1. ...

  7. 多线程:Java两个线程,一个打印A-Z,另一个打印1-26,输出结果:A1 B2 C3 ...... Z26

    最近看到一个题,很有意思,就是在Java里实现两个线程,一个线程打印字母,也就是 ABCD - Z,另一个线程打印数字,也就是 1234 - 26.但是这两个线程需要交替打印:第一次字母线程先打印A, ...

  8. java多线程交替打印_java多线程 更优雅的实现线程同步:交替打印A、B LockSupport实现...

    一 问题概述 线程或者进程之间有两种关系 同步和互斥,我们通常实现同步方法是使用线程的等待唤醒机制,而等待唤醒机制的使用是建立在互斥的继承上的.但是同步线程并不一定是必须要实现互斥的.比如一个线程打印 ...

  9. C#LeetCode刷题-多线程

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-多线程 | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode多线程类算法题汇总. ...

  10. LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口

    目录 1114. 按序打印 解法 1115. 交替打印FooBar 解法 1116. 打印零与奇偶数 解法 1117. H2O 生成 解法 1118. 设计有限阻塞队列 解法 1195. 交替打印字符 ...

最新文章

  1. 如何提高服务器响应的数据速度_如何提高攻牙速度
  2. 可执行SQL文的mybatis工具类
  3. digitalocean如何还原出厂设置
  4. maven的pom报plugins错误的解决方法.
  5. sql中exists替换in的区别
  6. mysql业务 日志_mysql笔记之日志篇
  7. 路考步骤七步走 科目三考试一定没问题!
  8. 什么是MES?与ERP有什么区别呢?
  9. 多模态 | 复旦推出跨视觉语言模态预训练模型,并达到SOTA
  10. 关于transmission下载速度提升的小建议
  11. 正则应用之——日期正则表达式
  12. powerbi导入地图_PowerBI 地图 - 层级下钻形状地图最佳实践
  13. 计算机实验三—CPT
  14. 苹果app老是显示无法连接服务器失败原因,iphone无法连接到app store服务器出错怎么办...
  15. 输入空间、输出空间、特征空间与假设空间的区分
  16. 思科ccie网络工程师一定要里了解的网络拥塞及拥塞控制技术
  17. InstallShield打包源码公布
  18. 孔雀优化算法(Peafowl (Pavo Muticus/Cristatus) Optimization Algorithm, POA)
  19. 通信中间件DDS介绍(一)
  20. 微软服务器搭建ngrok,ngrok搭建(Windows服务端+Windows客户端)

热门文章

  1. 【静脉检测】基于matlab手指静脉图像检测【含Matlab源码 1654期】
  2. 【物理应用】基于Matlab GUI超声场可视化仿真模拟【含Matlab源码 1494期】
  3. 【月径流预测】基于matlab未来搜索算法算法优化BP神经网络月径流预测【含Matlab源码 2001期】
  4. 【混凝土强度预测】基于matlab BP神经网络混凝土强度预测【含Matlab源码 695期】
  5. 【游戏】基于 matlab GUI lanchester作战模拟设计【含Matlab源码 426期】
  6. linux搭建vsftp服务器_Linux(CentOS 7)搭建VSFTP服务器
  7. 人工智能时代的危机_AI信任危机:如何前进
  8. 四种依恋类型_你们之间的爱情是哪种类型 | 爱情依恋关系测评
  9. 例2.11 FatMouse' Trade - 九度教程第21题(贪心算法)
  10. 计算机显示桌面的按钮,如何找回Windows“显示桌面”按钮 -电脑资料