Implement a class that extends Thread

public class NumberThread
{
  private static class Number extends Thread
  {
    int num;

    public Number ( int n )
    {
      num = n;
    }

    public void run ()
    {
      for ( int k = 0; k < 200; k++ )
	System.out.print ( num );
    }
  }

  public static void main ( String[] args )
  {
    Number number1 = new Number(1); number1.setPriority(1);
    Number number2 = new Number(2); number2.setPriority(10);
    Number number3 = new Number(3); number3.setPriority(3);
    Number number4 = new Number(4); number4.setPriority(8);
    Number number5 = new Number(5); number5.setPriority(5);

    number1.start();
    number2.start();
    number3.start();
    number4.start();
    number5.start();
  }
}

Implement a class that implements the interface Runnable

public class NumberPrinter
{
  private static class Number implements Runnable
  {
    int num;

    public Number ( int n )
    {
      num = n;
    }

    public void run ()
    {
      for ( int k = 0; k < 200; k++ )
	System.out.print ( num );
    }
  }

  public static void main ( String[] args )
  {
    Thread number1 = new Thread ( new Number(1) ); 
    number1.setPriority(1);

    Thread number2 = new Thread ( new Number(2) ); 
    number2.setPriority(10);

    Thread number3 = new Thread ( new Number(3) ); 
    number3.setPriority(3);

    Thread number4 = new Thread ( new Number(4) ); 
    number4.setPriority(8);

    Thread number5 = new Thread ( new Number(5) ); 
    number5.setPriority(5);

    number1.start();
    number2.start();
    number3.start();
    number4.start();
    number5.start();
  }
}

Using Threads to Simulate Animation

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ScrollingBanner extends JPanel implements Runnable
{
  protected Thread banner;      // animation thread
  protected String text;        // text to be displayed
  protected Font font;          // font used to display text
  protected int width;          // width of viewing area in pixels
  protected int height;         // height of viewing area in pixels
  protected int x, y;           // current position of text
  protected int delay;          // interval between frames in millisec
  protected int offset;         // distance moved between two frames
  protected Dimension size;     // size of viewing area
  protected Image image;        // off-screen image
  protected Graphics offScreen; // off-screen graphics
  
  public ScrollingBanner( int aWidth, int aHeight )
  {
    // Set the width and heigth and size
    width = aWidth;
    height = aHeight;
    setSize ( width, height );
    
    // Set the text
    text = new String ("Java is fun");
    
    // Set the font
    font = new Font ( "Sans-serif", Font.BOLD, 24 );
    
    // Set the time interval between frames in millisec
    delay = 100;
    
    // Set the intial values for x and y
    x = width / 2;
    y = height / 2;
    
    // Set the offset
    offset = 1;
    
    // Create and start the thread
    banner = new Thread ( this );
    banner.start();
  }
  
  public void paintComponent ( Graphics g )
  {  
      // Get the size of the viewing area
      size = this.getSize();
      
      // Create the off-screen image buffer if it is the first time
      if ( image == null )
      {
          image = createImage ( size.width, size.height );
          offScreen = image.getGraphics();
      }
      
      // Get the font metrics to determine the length of the text 
      offScreen.setFont ( font );
      FontMetrics fm = g.getFontMetrics();
      int length = fm.stringWidth ( text );
      
      // Adjust the position of the text from the previous frame
      x = x - offset;
      
      // If the text is completely off to the left end move the
      // position of the banner to the right edge
      if ( x < -length )
        x = size.width;
        
      // Set the color and paint the background
      offScreen.setColor ( Color.black );
      offScreen.fillRect ( 0, 0, size.width, size.height );
      
      // Set the pen color and draw the text
      offScreen.setColor ( Color.green );
      offScreen.drawString ( text, x, y );
      
      // Copy the off-screen image to the screen
      g.drawImage ( image, 0, 0, this );     
  }
  
  public void update ( Graphics g )
  {
      paintComponent ( g );
  }
  
  public void run ()
  {
     while ( Thread.currentThread() == banner )
     {
         repaint ();
         try
         {
             Thread.sleep ( delay );
         }
         catch ( InterruptedException e )
         {
             System.out.println ( "Exception: " + e.getMessage() );
         }        
     }
  }

  public static void main ( String[] args )
  {
      JFrame frame = new JFrame ( "Scrolling Banner" );
      ScrollingBanner panel = new ScrollingBanner ( 400, 400 );
      frame.getContentPane().add ( panel );
      frame.setSize ( panel.width, panel.height );
      frame.setVisible ( true );
      frame.addWindowListener ( new WindowAdapter() {
          public void windowClosing ( WindowEvent evt ) {
              System.exit ( 0 );
          }
      } );
  }
}