题目一:写两个线程,一个线程打印1~52,另一个线程打印字母A~Z。打印顺序为12A34B56C........5152Z。要求用线程间的通信。package test;
import java.lang.Thread;class Printer{ private int index = 1; public synchronized void print(int n){ while(index%3==0){ try{ wait();/*在其他线程调用此对象的notify方法钱,导致当前线程等待*/ }catch(Exception e) { e.printStackTrace(); } } System.out.print(index); index++; notifyAll(); } public synchronized void print(char c){ while(index%3!=0){ try{ wait(); }catch(Exception e){ e.printStackTrace(); } } System.out.print(c); System.out.print(index); index++; notifyAll(); }}class NumberPrinter extends Thread{ private Printer p; public NumberPrinter(Printer p){ this.p=p; } public void run(){ for(int i=1;i<=52;i++) p.print(i); }}class CharPrinter extends Thread{ private Printer p; public CharPrinter(Printer p){ this.p=p; } public void run(){ for(char c='A';c<='Z';c++) p.print(c); }}public class MyThread { public static void main(String args[]){ Printer p = new Printer(); Thread t1 = new NumberPrinter(p); Thread t2 = new CharPrinter(p); t1.start(); t2.start(); }}