美文网首页java相关
多线程控制输出

多线程控制输出

作者: 行舟2009 | 来源:发表于2017-06-04 13:27 被阅读16次

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

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

相关文章

  • 多线程控制输出

    构造两个线程,轮流输出数字和字母。 1. main方法类 package com.yuxiSorftware.te...

  • 线程中出现异常的处理

    先看一个线程中报错的例子: 很显然,程序在控制台输出空指针,在java的多线程技术中,可以对多线程中的异常进行"捕...

  • 底层原理(八)------多线程

    iOS中常见的多线程方案 控制器命令:c:过掉step:输出汇编stepi:进入这个汇编函数 简称si NSThr...

  • iOS多线程随笔

    1. 多线程的并发控制 1.1 在CGD中快速实现多线程的并发控制 NSOperationQueue来处理并发控制...

  • Go 语言多线程实例

    Go 语言多线程实例 本文代码使用了goroutine实现了多线程,使用chan来控制多线程。runtime.GO...

  • Golang log日志

    golang控制台输出log和两种将log输出到文件的方法 控制台输出 文件输出

  • 线程按指定顺序执行

    在多线程中线程的执行是CPU随机调度的,无法指定线程的执行顺序,比如我们要让多线程按顺序执行输出 这段代码的输出顺...

  • 多线程方法

    一. 基础并行多线程结构 二. 标准多线程方法,控制并发线程数,带线程锁

  • 第二天

    JS中常用的输出方式 (3种) consoleconsole.log() 控制台输出日志在控制台输出,特点是:输出...

  • 1.6 JS中常用的几种输出方式

    JS中常用的输出方式 console 控制在浏览器控制台输出的console.log() 控制台输出日志conso...

网友评论

    本文标题:多线程控制输出

    本文链接:https://www.haomeiwen.com/subject/ajvvfxtx.html