Java线程问题实现打印数字字母

来源:互联网 发布:美国反恐战争数据图 编辑:程序博客网 时间:2024/05/18 02:38

.写两个线程,一个线程打印1-52,另一个线程答应字母A-Z。打印顺序为12A34B56C……5152Z。通过使用线程之间的通信协调关系。

public class Test1 {public static void main(String[] args) {Print print = new Print();Num n = new Num(print);Alphabetical a = new Alphabetical(print);Thread t1 = new Thread(n);Thread t2 = new Thread(a);t1.start();t2.start();}}class Print {boolean flag = false;public synchronized void printnum() throws InterruptedException {for (int i = 1; i <= 52; i++) {while (flag == true) {this.wait();}System.out.print(i);if (i % 2 == 0) {flag = true;this.notifyAll();}}}public synchronized void printa() throws InterruptedException {for (int i = 1; i <= 26; i++) {while (flag == false) {this.wait();}System.out.print((char) (i + 64));flag = false;this.notify();}}}class Num implements Runnable {Print p;public Num(Print p) {super();this.p = p;}@Overridepublic void run() {try {p.printnum();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}class Alphabetical implements Runnable {Print p;public Alphabetical(Print p) {super();this.p = p;}@Overridepublic void run() {try {p.printa();} catch (InterruptedException e) {e.printStackTrace();}}}


1 0