首先明确每一个线程都会有自己的一个私有的执行方法,代码里面为(print函数)。然后有一个问题是打印结果前三个字符没有打印‘*’,说明锁没被释放,但是没问题,有点迷~~,还有main线程没有结束~~,我先挖个坑!!!

上代码:

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;public class ConditionTest {public static ReentrantLock lock = new ReentrantLock();public static Condition condition1 = lock.newCondition();public static Condition condition2 = lock.newCondition();public static Condition condition3 = lock.newCondition();public static void main(String[] args) {//线程名字为thread1new Thread(() -> print('a', condition1, condition2), "thread1").start();//线程名字为thread2new Thread(() -> print('A', condition2, condition3), "thread2").start();//线程名字为thread3new Thread(() -> print('0', condition3, condition1), "thread3").start();}public static void print(char letter,Condition conditionNow,Condition conditionNew){for (int i = 0; i < 10; i++) {try {lock.lock();System.out.print((char) (letter + i));Thread.sleep(300);conditionNew.signal();conditionNow.await();} catch (InterruptedException e) {e.printStackTrace();} finally {//测试是否每次都释放了锁System.out.print("*");lock.unlock();}}}
}

输出结果:

可以看出main线程没有结束~~~

三线程循环打印aA0bB1......相关推荐

  1. java两个线程循环打印_java循环打印 多线程

    问题描述 Java多线程,循环打印"我是多线程"10次. 思路: 1 开启5个线程 "我" "是" "多" " ...

  2. java使用三种循环打印99表_编程题:利用for循环打印 9*9 表

    # 利用for循环打印 9*9 表? 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 ...

  3. java实现123n_java三线程交替打印123……n

    使用多线程交替打印1--n,a进程打印1,4,7,--(3n+1),b进程打印2,7,10,--(3n+2),c进程打印3,6,9,--(3n) 涉及到多线程的同步,阻塞,wait,notify 代码 ...

  4. 开启3个线程循环打印10遍ABC-何氏硬刚版+网红版

    文章目录 面试题目+吐槽 何氏硬刚版 思路 代码 网红版 思路 代码 面试题目+吐槽 我是不知道为什么这个东西一直在面试编码题中吃香,真的.不过真说起来,也没啥好吐槽的,人为刀俎我为鱼肉,你去面试,就 ...

  5. 一道面试题:三个线程循环有序输出10次ABCABC...

    面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...

  6. 手撕面试题:多个线程交替打印问题

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 第一篇打算总结下阿里最喜欢问的多个线程顺序打印问题,我遇到 ...

  7. 清晰思路带你掌握如何运用循环打印各种图案(新手向)

    目录 一.简单介绍三种循环语句及使用时的注意事项(已学会的可跳过) 1.do语句 2.while语句 3.for语句 4.补充说明 二.打印图案的共性发现 三.循环打印直角三角形 四.另类思路打印其他 ...

  8. python两个线程交替打印_三线程按顺序交替打印ABC的四种方法

    建立三个线程A.B.C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印. 二.Synchroni ...

  9. 线程间通信---数字交替打印(循环打印abc)

    今天来看看面试中必考的线程间通信,经历过面试的都知道,手撕代码除了算法题,排序题,单例模式等之外就是线程间通信的考点了.来一起喵喵吧. 1.两个数字交替打印 1.1 自定义锁 使用volatile保证 ...

最新文章

  1. asp网上书店系统_Asp.net Core启动流程讲解(一)
  2. ios MKNetworkKit 的使用
  3. 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布
  4. Oracle条件查询语句-where
  5. Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
  6. javascript创建多行字符串的方法(转)
  7. ACM-ICPC 2018 沈阳赛区网络预赛 Spare Tire(容斥+公式推)
  8. Android开发教程之--sql语句一、创建/删除表Stringsql=Createtable
  9. 动态生成JSP文件,并调用JSP程序
  10. linux一键启动脚本,Linux一键启动、停止、重启Tomcat sh脚本
  11. 为什么要多读书?多看书?
  12. python super详解_python中super()详解
  13. 服务器做raid bios界面做raid配置
  14. yolov3视频检测图像上显示准确率
  15. 用python中的turtle库画蜡笔小新
  16. 已知直线上两点求直线的一般式方程
  17. Calendar获取当前日期,或前几天,或后几天的日期
  18. C语言小记:结构体及其在内存中的储存形式
  19. win10调节桌面显示计算机,Win10系统电脑屏幕的饱和度如何调整?
  20. 走进诺奖大师系列:科斯(Ronald H.Coase)

热门文章

  1. [更新] 99行拓扑优化 代码解析
  2. excel拆分工资条怎么轻松完成?
  3. Structured Streaming报错记录:Overloaded method foreachBatch with alternatives
  4. 使用 JAVA 队列把高并发转为批量串行降低后端并发压力
  5. 面试官问百万数据excel导出功能如何实现?
  6. win7系统删除打印机后刷新又出现怎么办
  7. 如何解决Android遇到的65536问题
  8. 看“猫”片, 读懂HTTP状态码(多猫慎入)
  9. 华为手机按下这个键,瞬间投屏到电视大屏幕,效果惊艳堪比电影院
  10. Python实现桌面文件收纳分类整理,附带打包成exe教程