1. 程式人生 > >java的wait和notify練習

java的wait和notify練習

寫兩個執行緒,一個執行緒列印 1~52,另一個執行緒列印A~Z,
列印順序是12A34B...5152Z;
class Print{
        private int i=1;
        private char j='A';
        public synchronized void printNumber(){
                System.out.print(String.valueOf(i)+String.valueOf(i+1));
                i=i+2;
                notifyAll();
                try{
                        wait();
                }catch(InterruptedException e){
                        e.printStackTrace();
                }
        }
        public synchronized void printChar(){
                System.out.println(j);
                j++;
                notifyAll();
                try{
                        if(j<='Z'){
                        wait();
                }
                }catch(InterruptedException e){
                        e.printStackTrace();
                }
        }
}
class PrintNumber implements Runnable{
        private Print p;
        public PrintNumber(Print p){
                this.p=p;
        }
        public void run(){
                for(int i=0;i<26;i++){
                        p.printNumber();
                }
        }
}
class PrintChar implements Runnable{
        private Print p;
        public PrintChar(Print p){
                this.p=p;
        }
        public void run(){
                for(int i=0;i<26;i++){
                        p.printChar();
                }
        }
}
public class test{
        public static void main(String[]args){
       Print p=new Print();
       Thread printnumber=new Thread(new PrintNumber(p),"列印數字");
       Thread printchar=new Thread(new PrintChar(p),"列印字母");
       printnumber.start();
       printchar.start();
        }
}