写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z,
打印顺序是12A34B…5152Z;

第一种方式:

class Print{private int flag = 1;private int count = 1;public synchronized void printNum(){while(flag != 1) {//此时应该打印字母try {wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.print(2*count-1);System.out.print(2*count);flag = 2;notify();}public synchronized void printChar(){while(flag != 2){//此时应该打印数字try {wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.print((char)(count-1+'A'));//继续前行count++;flag = 1;notify();}
}
public class Test{public static void main(String[] args) {Print print = new Print();new Thread(()->{for(int i = 0;i<26;i++){print.printNum();}}).start();new Thread(()->{for(int i = 0;i<26;i++){print.printChar();}}).start();}
}

第二种方式:

class MyThread1 extends Thread {private Object obj;public MyThread1(Object obj) {this.obj = obj;}public void run(){synchronized (obj){for(int i =1; i<=52; i++){System.out.print(i);if(i%2 == 0) {try {obj.wait();} catch (InterruptedException e) {e.printStackTrace();}}obj.notifyAll();}}}
}
class MyThread2 extends Thread{private Object obj;public MyThread2(Object obj) {this.obj = obj;}public void run(){synchronized (obj){for(int i = 0;i<26;i++){System.out.print((char)('A' + i));obj.notify();try {if(i!=25) {obj.wait();}} catch (InterruptedException e) {e.printStackTrace();}}}}
}
public class Test3{public static void main(String[] args) {Object obj = new Object();MyThread1 thread1 = new MyThread1(obj);MyThread2 thread2 = new MyThread2(obj);thread1.start();thread2.start();}
}

写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B...5152Z;相关推荐

  1. 写两个线程,一个线程打印1~52,另一个线程打印A~Z,打印顺序是12A34B....5152Z

    分析: 其中一个线程负责打印数字,另一个线程负责打印字母,但有一个特点就是数字刚好是字母的2倍(字母26,数字52),数字一次打印2个,字母打印一个,并且字母打印线程一定是在数字打印线程之后才打印的. ...

  2. 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z

    通过这个例题学到了很多,记录下来便于以后常看,<线程通信> /** 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z.打印 顺序为12A34B56C--5152Z>*/ p ...

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

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

  4. Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。

    写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z 多线程编程:使用Runnable接口实例创建线程.使用线程等待方法wait(): pack ...

  5. java编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替

    2.编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z.打印顺序为12A34B56C-.5152Z.即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印 ...

  6. 设计两个个线程模拟存取款操作,其中一个线程每次随机存1~1000元钱,另外一个线程取1-1000元钱,如果余额不足,则取款失败,提示余额不足。写出程序(考虑并发问题)。

    设计两个个线程模拟存取款操作,其中一个线程每次随机存1~1000元钱, 另外一个线程取1-1000元钱,如果余额不足,则取款失败,提示余额不足. 写出程序(考虑并发问题). import java.u ...

  7. 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来

    题目要求: 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来.(这是一道百度面试的算 ...

  8. js打印线程id_一文讲透“进程,线程和协程”

    一文讲透"进程,线程和协程" 本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同 ...

  9. 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称

    文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...

最新文章

  1. python opencv local_threshold_Python-OpenCV中的cv2.threshold
  2. 阅读Book: MultiObjective using Evolutionary Algorithms (4) --- 3 种方法find Non-dominated set
  3. 洛谷P1194 买礼物
  4. python 调用linux命令-Python Linux系统管理之Python中执行外部命令
  5. python time
  6. 一个人自学会java有用吗,大连java程序员培训经历(自学Java可以吗)
  7. aqlserver实用程序_sqlserver命令提示实用工具的介绍
  8. 微信小程序 View:flex 布局
  9. 相比于深度学习,传统的机器学习算法难道就此没落了吗,还有必要去学习吗?...
  10. MySql 数据库安装、环境变量配置 以及 本地连接
  11. Jmeter学习之旅(四)——各类型的HTTP接口功能测试
  12. OpenCV 直方图基础
  13. PHP SQL注入攻击与防御
  14. 微信小程序实现使用百度云 人脸录入人脸识别功能
  15. excel查找空值快捷键_Excel快捷键查询
  16. InfoPath2007中通过MOSS的webservice读取数据库时需注意的事项
  17. 无法使用内置管理器打开计算机,win10系统无法使用内置管理员账户打开计算器的解决方法...
  18. 【java】Integer == Integer?
  19. Android开发快速入门及导出apk
  20. 基于MIMO的滤波器组多载波调制技术(后期将附上MATLAB代码)

热门文章

  1. 微信小程序导入 导出excel 文件 预览文件并转发
  2. Word如何取消自动拼写检查、自动句首字母大写
  3. qt在线安装提示无法下载存档
  4. RK3399鸿蒙系统平板,诺维 工控级安卓主板 RK3399K4 安卓8.1系统
  5. ModelCheckpoint
  6. 使用GPS获取定位信息
  7. Pycharm终端运行python文件
  8. 一图搞懂tp6.0事件机制
  9. 分布式session问题
  10. 如何利用Redis实现分布式Session?