三线程循环打印aA0bB1......
首先明确每一个线程都会有自己的一个私有的执行方法,代码里面为(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......相关推荐
- java两个线程循环打印_java循环打印 多线程
问题描述 Java多线程,循环打印"我是多线程"10次. 思路: 1 开启5个线程 "我" "是" "多" " ...
- 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 ...
- 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 代码 ...
- 开启3个线程循环打印10遍ABC-何氏硬刚版+网红版
文章目录 面试题目+吐槽 何氏硬刚版 思路 代码 网红版 思路 代码 面试题目+吐槽 我是不知道为什么这个东西一直在面试编码题中吃香,真的.不过真说起来,也没啥好吐槽的,人为刀俎我为鱼肉,你去面试,就 ...
- 一道面试题:三个线程循环有序输出10次ABCABC...
面试遇到的一道面试题:三个线程循环有序输出10次ABCABC... 解决思路:使用synchronized,wait和notifyAll控制线程同步 package com.myj.test.thre ...
- 手撕面试题:多个线程交替打印问题
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 第一篇打算总结下阿里最喜欢问的多个线程顺序打印问题,我遇到 ...
- 清晰思路带你掌握如何运用循环打印各种图案(新手向)
目录 一.简单介绍三种循环语句及使用时的注意事项(已学会的可跳过) 1.do语句 2.while语句 3.for语句 4.补充说明 二.打印图案的共性发现 三.循环打印直角三角形 四.另类思路打印其他 ...
- python两个线程交替打印_三线程按顺序交替打印ABC的四种方法
建立三个线程A.B.C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印. 二.Synchroni ...
- 线程间通信---数字交替打印(循环打印abc)
今天来看看面试中必考的线程间通信,经历过面试的都知道,手撕代码除了算法题,排序题,单例模式等之外就是线程间通信的考点了.来一起喵喵吧. 1.两个数字交替打印 1.1 自定义锁 使用volatile保证 ...
最新文章
- asp网上书店系统_Asp.net Core启动流程讲解(一)
- ios MKNetworkKit 的使用
- 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布
- Oracle条件查询语句-where
- Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
- javascript创建多行字符串的方法(转)
- ACM-ICPC 2018 沈阳赛区网络预赛 Spare Tire(容斥+公式推)
- Android开发教程之--sql语句一、创建/删除表Stringsql=Createtable
- 动态生成JSP文件,并调用JSP程序
- linux一键启动脚本,Linux一键启动、停止、重启Tomcat sh脚本
- 为什么要多读书?多看书?
- python super详解_python中super()详解
- 服务器做raid bios界面做raid配置
- yolov3视频检测图像上显示准确率
- 用python中的turtle库画蜡笔小新
- 已知直线上两点求直线的一般式方程
- Calendar获取当前日期,或前几天,或后几天的日期
- C语言小记:结构体及其在内存中的储存形式
- win10调节桌面显示计算机,Win10系统电脑屏幕的饱和度如何调整?
- 走进诺奖大师系列:科斯(Ronald H.Coase)
热门文章
- [更新] 99行拓扑优化 代码解析
- excel拆分工资条怎么轻松完成?
- Structured Streaming报错记录:Overloaded method foreachBatch with alternatives
- 使用 JAVA 队列把高并发转为批量串行降低后端并发压力
- 面试官问百万数据excel导出功能如何实现?
- win7系统删除打印机后刷新又出现怎么办
- 如何解决Android遇到的65536问题
- 看“猫”片, 读懂HTTP状态码(多猫慎入)
- 华为手机按下这个键,瞬间投屏到电视大屏幕,效果惊艳堪比电影院
- Python实现桌面文件收纳分类整理,附带打包成exe教程