// Thread3.java

// Introducing the sleep() and join() methods.
// Note that the interleaving of thread outputs is not quite perfect.

// by Kip Irvine
// Updated 1/21/2003

import java.lang.Thread;

class MessageThread implements Runnable 
{
	public MessageThread( String msg )
	{
		message = msg;
	}	

	public void run( )
	{
		for( int i = 0; i < 50; i++ )
		{
			System.out.println( message + i );
   		}
  	} 
  private String message;
}

class ThreadDemo 
{
	public static void main( String[] args )
	{
     	Thread t1 = new Thread ( new MessageThread ( "Thread1: " ) );	
     	Thread t2 = new Thread ( new MessageThread ( "Thread2: " ) );		
     	
     	t1.start( );
     	
     	// even though Thread 1 starts before t2, t2 ends up finishing first
		t2.setPriority( Thread.NORM_PRIORITY + 1 );
     	t2.start( );
     	    	
	}
}
