前一段时间参加了一次阿里的面试,有一道远程代码题,当场没有做出来,现在补上,题目内容大概如下:

给定一个数组[1,2,3,4,5,6,7,8,9....,15],要求遍历数组,遇到可以同时被3和5整除的数字,打印C;遇到仅能被5整除的数字,打印B;遇到仅能被3整除的数字,打印A;其他打印数字本身;

要求四个线程,每一个线程执行一个打印方法。

我这里使用了lock和condition做了下实现,详细代码如下,希望可以给大家一些参考:

package general.node.ali;import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class FourThread implements Runnable {private static final int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};private static Lock lock = new ReentrantLock();private static Condition condition = lock.newCondition();private static volatile int currentCount = 0;private PrintFunction printFunction;private int flag;public FourThread(int flag, PrintFunction printFunction) {this.flag = flag;this.printFunction = printFunction;}private int checkFlag(int n) {if (n % 15 == 0) {return 0;} else if (n % 5 == 0) {return 1;} else if (n % 3 == 0) {return 2;} else {return 3;}}@FunctionalInterfaceinterface PrintFunction {void print(int n);}@Overridepublic void run() {while (true) {lock.lock();try {while (currentCount < array.length && checkFlag(array[currentCount]) % 4 != flag) {condition.await();}if (currentCount < array.length) {printFunction.print(array[currentCount]);currentCount++;condition.signalAll();} else {return;}} catch (InterruptedException e) {e.printStackTrace();} finally {lock.unlock();}}}public static void main(String[] args) {new Thread(new FourThread(0, (n) -> System.out.print("C"))).start();new Thread(new FourThread(1, (n) -> System.out.print("B"))).start();new Thread(new FourThread(2, (n) -> System.out.print("A"))).start();new Thread(new FourThread(3, (n) -> System.out.print(n))).start();}}

阿里巴巴社招笔试题——多线程打印相关推荐

  1. 阿里巴巴社招笔试题——多线程打印(2)

    接上一篇https://blog.csdn.net/wo2huoa/article/details/104213225,对于这道多线程打印题,我一开始的代码如下,与上一篇博文唯一的区别在于,当数组循环 ...

  2. 邮储社招Java笔试题_2019年及历年中国邮政储蓄银行社招笔试题和参考答案6套

    2019年及历年中国邮政储蓄银行社招笔试题和参考答案6套 目录: 1.2016年中国邮政储蓄银行社会招聘笔试题和参考答案 2.2019年5月中国邮政储蓄银行社会招聘笔试题和参考答案 3.2019年中国 ...

  3. 第一次社招笔试题回顾(全基础题)

    第一次社招笔试题回顾 在上个月裸辞之后,休息了近一个月,最近开始找工作,发现很多基础自己忘了挺多的.从校招过后,到现在,将近1年多没有怎么做过算法题,Eclipse,Idea这几个都用的比较少. 一家 ...

  4. 邮政社招笔试题库_工商银行招聘考试题库13套和参考答案

    目录: 1. xx工商银行招聘面试题(笔试真题) 2. 中国工商银行xx分行招聘笔试题无答案(行测部分) 3. 中国工商银行客户经理招聘笔试题和答案 4. 中国工商银行总行校园招聘笔试题和参考答案(行 ...

  5. 邮政社招笔试题库_2016年中国邮政储蓄银行招聘考试笔试题库内容试卷历年真题...

    邮政银行招聘考试笔试复习资料 历年考试真题 建议报考的同学提前做好复习准备 ,考试复习资料可以到"考佳卜资料网" 上面找找, 资料确实不错, 比较有针对性, 资料都是上次参加考试的 ...

  6. 深度剖析!阿里巴巴社招面试题答案总结分享,希望对大家有帮助!

    阿里巴巴研发面经 阿里中间件研发面经 研发工程师(Java) 阿里一面: 1 自我介绍 2 项目中做了什么,难点呢. 3 Java的线程池说一下,各个参数的作用,如何进行的. 4 Redis讲一下 5 ...

  7. 爆肝三天整理!2021年阿里巴巴社招面试题总结,三轮技术面+HR面,总结的明明白白!

    前言: 今年是我第一次正式面试,期间看了很多网上的帖子,给了我很大帮助.面试结束后一直想着将面经整理出来,但实验室一直有事,老师天天找,所以一直没有找到机会.端午终于有些空闲时间,赶紧将面经整理出来, ...

  8. 邮政社招笔试题库_中国邮政 招聘考试试题及答案 总括版

    1 中国邮政招聘考试精华试题 一.单项选择题(共 60 题,每题 1 分.每题的备选项中,只有 1 个最符合题意) 1.根据<邮政法>的规定,在邮件寄递过程中,邮政企业的权利不包括( ). ...

  9. 邮政社招笔试题库_中国邮政招聘考试试题及答案--总括版

    中国邮政招聘考试精华试题 一.单项选择题(共 60 题,每题 1 分.每题的备选项中,只有 1 个最符合题意) 1 .根据<邮政法>的规定,在邮件寄递过程中,邮政企业的权利不包括( ). ...

最新文章

  1. 【原创】大叔经验分享(65)spark读取不到hive表
  2. WPF 异常其他信息: “对类型“BaseControl.KImgButton”的构造函数执行符合指定的绑定约束的调用时引发了异常。”,行号为“38”,行位置为“22”。...
  3. 为AI学术小白铺平道路,NeurIPS 2019推出New In ML2019特别会议
  4. python面试题_17道Python面试题,分享给你以防不测!
  5. WEB前端面试题汇总整理01
  6. 视频 java 我行我素管理系统 随堂视频
  7. 用Remastersys定制自己的Ubuntu安装光盘
  8. 通过 Python_Faker 生成测试数据
  9. php使用使用外部变量的值,PHP实现函数内修改外部变量值的方法示例
  10. mysql null 0 空_MySQL中 null与not null和null与空值''的区别
  11. python免费全套教程400集视频-阿里巴巴大佬打造400集Python视频教程视频拿去,学完万物皆可爬...
  12. 伽罗华域(有限域)及其运算规则(包含大量例子)
  13. 三种教鞭工具使用对比
  14. VC++农历与公历转换
  15. 【编程题】【Scratch三级】2021.03 接苹果
  16. 安卓和IOS推广技巧汇总,app安卓推广、ios推广aso优化
  17. Android 后台启动startService()相关问题的解决
  18. debian 9 配置ati驱动
  19. 如何根据PPI网络进一步挖掘信息
  20. Vue3分页器(Pagination)

热门文章

  1. OSPO Summit 2022 正式启动!OSPO Summit 2022 Launched!
  2. css媒体查询来兼容
  3. 记:解决 Weditor 页面元素坐标定位不到、不准确的问题
  4. 查看git暂存区有哪些文件
  5. 后台管理系统纯前端模板
  6. Windows安装Apache(解决问题Set the 'ServerName' directive globally to suppress this message)
  7. 美女照相怎么摆pose
  8. Desmos-可能是迄今为止最好用的免费Web端数学图像绘制工具
  9. 让你的 Mac 用上最美的屏保,Aerial 使用教程
  10. Macbook怎么录屏?macbook怎么屏幕录制