2.编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印,直到打印到整数52和字母Z结束。
要求:
1)编写打印类Printer,声明私有属性index,初始值为1,用来表示是第几次打印。
2)在打印类Printer中编写打印数字的方法print(int i),3的倍数就使用wait()方法等待,否则就输出i,使用notifyAll()进行唤醒其它线程。
3)在打印类Printer中编写打印字母的方法print(char c),不是3的倍数就等待,否则就打印输出字母c,使用notifyAll()进行唤醒其它线程。
4)编写打印数字的线程NumberPrinter继承Thread类,声明私有属性private Printer p;在构造方法中进行赋值,实现父类的run方法,调用Printer类中的输出数字的方法。
5)编写打印字母的线程LetterPrinter继承Thread类,声明私有属性private Printer p;在构造方法中进行赋值,实现父类的run方法,调用Printer类中的输出字母的方法。
编写测试类Test,创建打印类对象,创建两个线程类对象,启动线程

public class Printer {private int index =1;public synchronized void print(int i){//2)在打印类Printer中编写打印数字的方法print(int i),3的倍数就使用wait()方法等待,//否则就输出i,使用notifyAll()进行唤醒其它线程。try {Thread.sleep(100L);} catch (InterruptedException e) {e.printStackTrace();}//判断index是否能被3整除while(index%3==0){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println(i);index++;//唤醒字母线程this.notifyAll();}public synchronized void print(char c){try {Thread.sleep(100L);} catch (InterruptedException e) {e.printStackTrace();}//判断index是否不能被3整除while(index%3!=0){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}System.err.println(c);index++;//唤醒数字线程this.notifyAll();}public Printer(int index) {super();this.index = index;}public Printer() {super();}}
public class NumberPrinter extends Thread {private Printer p;public NumberPrinter(Printer p) {super();this.p = p;}@Overridepublic void run() {//调用打印数字的方法for(int i = 1;i<=52;i++){p.print(i);}}}
public class LetterPrinter extends Thread {private Printer p;public LetterPrinter(Printer p) {super();this.p = p;}@Overridepublic void run() {for(char c ='A';c<='Z';c++){p.print(c);}}}

public class Test {/** 2.编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。*   打印顺序为12A34B56C….5152Z。*   即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,*   打印一个字母,交替循环打印,直到打印到整数52和字母Z结束。*/public static void main(String[] args) {//创建打印类对象Printer p = new Printer();//分别创建2个线程NumberPrinter np = new NumberPrinter(p);LetterPrinter lp = new LetterPrinter(p);//启动线程np.start();lp.start();}}

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

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

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

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

    使用wait,notify实现 public class Test {public synchronized void a() {for (int i = 1; i <= 52; i++) {S ...

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

    写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B-5152Z: 第一种方式: class Print{private int flag = 1;private in ...

  4. java编写计算类加减乘除_老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java...

    导航:网站首页 > 老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java 时间:2019-4-10 老师要求张浩使用面向对象的思想编 ...

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

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

  6. java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。

    java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数.另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码. 具 ...

  7. 写缓存java,编写线程安全的Java缓存读写机制 (原创)

    一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...

  8. 怎样实现两个线程共享一个集合_面试高频考察点:几种线程安全的Map解析

    Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的. 看下面两个场景: 1.当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,所以这时也不存在线程安全不 ...

  9. Java 编写程序打印以下图形_怎么用java编写如下程序在屏幕上输出如下图形 * *** *** * 循环语句做(if语句)...

    怎么用java编写如下程序在屏幕上输出如下图形 * *** ***** ******* ***** ... 4个答案  提问时间: 2011-12-16  22个赞 回答:这个图形对吧? * *** ...

最新文章

  1. AngularJs--过滤器(filter)
  2. Linux对用户态的动态内存管理
  3. java常见类关系(UML建模)
  4. linux磁盘和文件系统管理
  5. Application Fundamentals
  6. cximage 控制台 程序 显示图片_VisualStudio创建程序(Create a program)
  7. linux定时任务cron配置
  8. java解析html_java中几种解析html的工具
  9. git php框架,如何用Git安装TP框架
  10. python 通达信公式函数_通达信,文华财经,非常实用的主图均线变色指标
  11. 等保2.0三级物联网安全扩展要求
  12. 悉尼大学计算机科学专业,悉尼大学计算机科学专业
  13. 尚学堂视频笔记一:java面向对象基础和java基础知识
  14. harbor离线包下载(百度网盘)
  15. 红米4 android os唤醒,红米4(Redmi 4 高配版)一键救砖教程,轻松刷回官方系统
  16. 存储卡中各种文件夹用处
  17. mysql 多表查询练习题(一)数据准备
  18. window的dos命令学习笔记 七
  19. 股市顶尖高手超短秘诀
  20. python水位传感器输出水位_水位传感器原理 怎么判断水位传感器是否坏了

热门文章

  1. 日语笔记(1) 动词(一类动词、二类动词、三类动词)
  2. 一款百度网盘高速下载神器,速度再一次起飞!
  3. 电脑文件管理,教你批量给全部文件夹名称随机命名
  4. 7天掌握NIO和SOCKET,第三天,CharBuffer的API使用
  5. Eclilpse插件安装
  6. LeetCode(49)Anagram
  7. linux-3.0.1下spi设备mx25l的驱动
  8. android微信怎么建群,微信可以建群吗 图文教你微信怎么建群
  9. FCS阅读笔记:良好的编程习惯
  10. 育才计算机应用学校,仪陇县扶轮育才职业学校2020年招生简章