/* This is my seventh threaded program in Java */

public class Test7 {

  static final int NUM_THREADS = 10;
  static MyThread7 myNumberThreads[];
  static MyThread7 myCharacterThreads[];
  static ThreadGroup myNumbers, myCharacters;

  public static void main(String[] argv){

    myNumbers = new ThreadGroup("N");
    myCharacters = new ThreadGroup("C");
    myNumberThreads = new MyThread7[NUM_THREADS];
    myCharacterThreads = new MyThread7[NUM_THREADS];

    for (int i=0; i < NUM_THREADS; i++){
      (myNumberThreads[i] = createNumberThread(i)).start();
      (myCharacterThreads[i] = createCharacterThread(i)).start();
    }
    try {
      for (int i=0; i < NUM_THREADS; i++){
	myNumberThreads[i].join();
 	myCharacterThreads[i].join();
      }
   } catch (InterruptedException e){
      return;
    }
    System.out.println();
  }

  public static MyThread7 createNumberThread(int i){
    return new MyThread7(myNumbers, new Integer(i).toString());
  }

  public static MyThread7 createCharacterThread(int i){
    return new MyThread7(myCharacters, "abcdefghij".substring(i,i+1));
  }

}

class MyThread7 extends Thread{

  static final int NUM_PRINTS = 30;

  MyThread7(ThreadGroup g, String s){
    super(g, s);
  }

  public void run(){
    for (int i=0; i < NUM_PRINTS; i++){
      System.out.print(getName());
      if (Math.random() < 0.5) yield();
    }
  }
}









