java编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替
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~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
通过这个例题学到了很多,记录下来便于以后常看,<线程通信> /** 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z.打印 顺序为12A34B56C--5152Z>*/ p ...
- 两个线程,一个线程打印1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z...
使用wait,notify实现 public class Test {public synchronized void a() {for (int i = 1; i <= 52; i++) {S ...
- 写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B...5152Z;
写两个线程,一个线程打印 1~ 52,另一个线程打印A~Z, 打印顺序是12A34B-5152Z: 第一种方式: class Print{private int flag = 1;private in ...
- java编写计算类加减乘除_老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java...
导航:网站首页 > 老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java 时间:2019-4-10 老师要求张浩使用面向对象的思想编 ...
- Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。
写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z 多线程编程:使用Runnable接口实例创建线程.使用线程等待方法wait(): pack ...
- java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。
java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数.另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码. 具 ...
- 写缓存java,编写线程安全的Java缓存读写机制 (原创)
一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...
- 怎样实现两个线程共享一个集合_面试高频考察点:几种线程安全的Map解析
Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的. 看下面两个场景: 1.当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,所以这时也不存在线程安全不 ...
- Java 编写程序打印以下图形_怎么用java编写如下程序在屏幕上输出如下图形 * *** *** * 循环语句做(if语句)...
怎么用java编写如下程序在屏幕上输出如下图形 * *** ***** ******* ***** ... 4个答案 提问时间: 2011-12-16 22个赞 回答:这个图形对吧? * *** ...
最新文章
- AngularJs--过滤器(filter)
- Linux对用户态的动态内存管理
- java常见类关系(UML建模)
- linux磁盘和文件系统管理
- Application Fundamentals
- cximage 控制台 程序 显示图片_VisualStudio创建程序(Create a program)
- linux定时任务cron配置
- java解析html_java中几种解析html的工具
- git php框架,如何用Git安装TP框架
- python 通达信公式函数_通达信,文华财经,非常实用的主图均线变色指标
- 等保2.0三级物联网安全扩展要求
- 悉尼大学计算机科学专业,悉尼大学计算机科学专业
- 尚学堂视频笔记一:java面向对象基础和java基础知识
- harbor离线包下载(百度网盘)
- 红米4 android os唤醒,红米4(Redmi 4 高配版)一键救砖教程,轻松刷回官方系统
- 存储卡中各种文件夹用处
- mysql 多表查询练习题(一)数据准备
- window的dos命令学习笔记 七
- 股市顶尖高手超短秘诀
- python水位传感器输出水位_水位传感器原理 怎么判断水位传感器是否坏了