头条基础架构 - 面试题 - 三个线程并发打出ABC的字母
题目描述
有三个线程,分别能够打出A,B,C三个字母,如何让它们并发协作的打出ABCABCABC…这样的字符串?(仅使用ReentrantLock的功能)
思路一 Lock
使用一个lock与对应创建的condition,思路如下:
使用一把锁来控制同时三个线程的串行执行,但此时仍无法保证三个线程抢到锁的顺序;
发现当前不应该自己输出时,使用condition进入await状态;
在成功打印后,使用condition唤醒其它沉默的线程;
那么通俗来讲,流程就变成三个人不断抢锁,抢到锁后发现没轮到自己干活
原创
2020-06-21 23:39:21 ·
466 阅读 ·
0 评论