ThreadTester.java

Show multiple threads printing at different intervals.

public class ThreadTester {
   public static void main( String args[] )
   {
      PrintThread thread1, thread2, thread3, thread4;

      thread1 = new PrintThread( "thread1" );
      thread2 = new PrintThread( "thread2" );
      thread3 = new PrintThread( "thread3" );
      thread4 = new PrintThread( "thread4" );

      System.err.println( "\nStarting threads" );

      thread1.start();
      thread2.start();
      thread3.start();
      thread4.start();

      System.err.println( "Threads started\n" );
   }
}

class PrintThread extends Thread {
   private int sleepTime;

   // PrintThread constructor assigns name to thread 
   // by calling Thread constructor
   public PrintThread( String name )
   {
      super( name );

      // sleep between 0 and 5 seconds
      sleepTime = (int) ( Math.random() * 5000 );

      System.err.println( "Name: " + getName() +
                          ";  sleep: " + sleepTime );
   }

   // execute the thread
   public void run()
   {
      // put thread to sleep for a random interval
      try {
         System.err.println( getName() + " going to sleep" );
         Thread.sleep( sleepTime );
      }
      catch ( InterruptedException exception ) {
         System.err.println( exception.toString() );
      }

      // print thread name
      System.err.println( getName() + " done sleeping" );
   }
}

D:\cps592\notes\ch15\fig15_03>java ThreadTester
Name: thread1;  sleep: 3059
Name: thread2;  sleep: 3092
Name: thread3;  sleep: 4864
Name: thread4;  sleep: 830

Starting threads
Threads started

thread1 going to sleep
thread2 going to sleep
thread3 going to sleep
thread4 going to sleep
thread4 done sleeping
thread1 done sleeping
thread2 done sleeping
thread3 done sleeping


Maintained by John Loomis, last updated 15 June 2000