多线程控制输出

构造两个线程,轮流输出数字和字母。

1. main方法类

package com.yuxiSorftware.test;

/**

* 多线程控制输出

* 输出格式12A34B······5152Z

* @author ZCHANG2009

*

*/

public class Demo {

public static void main(String[] args) {

Printer printer = new Printer();

Thread t1 = new PrinterNumber(printer);

Thread t2 = new PrinterLetter(printer);

t1.start();

t2.start();

}

}

2.线程打印输出类

package com.yuxiSorftware.test;

/**

* 构造打印线程

* @author ZCHANG2009

*

*/

public class Printer {

//定义指数默认为1。

private int index = 1;

//构造打印数字的方法,每打印两个数字,等待打印一个字母

public synchronized void print(int i) {

while(index%3 == 0) {

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.print(i+" ");

index++;

notifyAll();

}

//构造打印字母的方法,每打印1个字母,等待打印两个数字

public synchronized void print(char c) {

while(index%3 != 0) {

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.print(c+" ");

index++;

notifyAll();

}

}

3.数字输出类

package com.yuxiSorftware.test;

/**

* 数字输出控制线程

* @author ZCHANG2009

*

*/

public class PrinterNumber extends Thread {

//注入构造打印线程

private Printer printer;

//构造数字输出方法

public PrinterNumber(Printer printer) {

this.printer = printer;

}

//构造线程方法

public void run() {

for(int i = 1; i <= 52; i++) {

printer.print(i);

}

}

}

4.字符输出类

package com.yuxiSorftware.test;

/**

* 字母输出控制线程

*

* @author ZCHANG2009

*

*/

public class PrinterLetter extends Thread {

// 注入构造打印线程

private Printer printer;

// 构造数字输出方法

public PrinterLetter(Printer printer) {

this.printer = printer;

}

// 构造线程方法

public void run() {

for (char c = 'A'; c <= 'Z'; c++) {

printer.print(c);

}

}

}

5.输出结果

1 2 A 3 4 B 5 6 C 7 8 D 9 10 E 11 12 F 13 14 G 15 16 H 17 18 I 19 20 J 21 22 K 23 24 L 25 26 M 27 28 N 29 30 O 31 32 P 33 34 Q 35 36 R 37 38 S 39 40 T 41 42 U 43 44 V 45 46 W 47 48 X 49 50 Y 51 52 Z

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,023评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,529评论 1 15
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,877评论 18 399
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,792评论 0 17
  • 官方下载的地址 选择自定义安装自己可以决定安装到哪个位置 通常跟php放在同一级目录 选择跳过捕获.PNG 开始A...
    coder_hong阅读 187评论 0 0