写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
2016-12-28 22:02
459 查看
package com.test7; public class Test16_1 { public static void main(String[] args) { //创建一个打印机 Printer aprinter=new Printer(); //同步该打印机输出 NumPrinter np=new NumPrinter(aprinter); AlpPrinter ap=new AlpPrinter(aprinter); np.start(); ap.start(); } } class Printer { //标识该打印数字还是字母?False打印数字,True打印字母,木人先打印数字. private boolean flag=false; //打印数字 public synchronized void print1() { for (int i=0;i<52;) { if (flag==false) { System.out.print((i+1)); System.out.print((i)+2); //只有成功打印,i才会自增,所以没有放在for循环里 i++; i++; //重新将flag置为true,等待输出字母 flag=true; //激活其它线程 this.notifyAll(); } else { try { //如果为true,则说明不应输出数字,等待输出 this.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } //输出字母打印机,同数字打印机方法 public synchronized void print2() { for(char c='A';c<='Z';) { if (flag==true) { System.out.print(c); flag=false; c++; this.notifyAll(); } else { try { this.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } //创建数字打印机线程 class NumPrinter extends Thread { private Printer aprinter=new Printer(); public NumPrinter(Printer aprinter) { this.aprinter=aprinter; } public void run() { // TODO Auto-generated method stub aprinter.print1(); } } //创建字母打印机线程 class AlpPrinter extends Thread { private Printer aprinter=new Printer(); public AlpPrinter(Printer aprinter) { this.aprinter=aprinter; } public void run() { // TODO Auto-generated method stub aprinter.print2(); } }
相关文章推荐
- 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印 顺序为12A34B56C……5152Z
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。要求用线程间的通信
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。要求用线程间的通信
- 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印 顺序为12A34B56C……5152Z
- 两个线程交替执行,一个打印1-52;一个打印A-Z;打印顺序为12A34B56C.....5152Z
- 写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序为12A34B56C......5152Z。
- 写两个线程,其中一个线程打印1-52,另一个打印A-Z,打印顺序为12A34B56C....5152Z。(《疯狂java讲义》第12章课后题一)
- 写两个线程,其中一个线程打印1-52,另一个打印A-Z,打印顺序为12A34B56C....5152Z
- 用java写两个线程,一个线程打印1-52,另一个线程打印字母A-Z
- 用java写两个线程,一个线程打印1-52,另一个线程打印字母A-Z
- 写2个线程,其中一个线程打印1~52,另一个线程打印A~z,打印顺序应该是12A34B45C……5152Z
- 写2个线程,一个打印1-52,一个打印A-Z,打印顺序是12A34B。。。(采用同步代码块和同步方法两种同步方法)
- 写两个线程,一个线程打印1-52,另…
- 两个整数序列,其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 【算法】输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- 两个线程按顺序打印1~10
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印