1. 程式人生 > 實用技巧 >Java使用Thread和Runnable的執行緒實現方法比較

Java使用Thread和Runnable的執行緒實現方法比較

本文例項講述了Java使用Thread和Runnable的執行緒實現方法。分享給大家供大家參考,具體如下:

一 使用Thread實現多執行緒模擬鐵路售票系統

1 程式碼

public class ThreadDemo
{
  public static void main( String[] args )
  {
    TestThread newTh = new TestThread( );
    // 一個執行緒物件只能啟動一次
    newTh.start( );
    newTh.start( );
    newTh.start( );
    newTh.start( );
  }
}
class TestThread extends Thread
{
  private int tickets = 5;
  public void run( )
  {
    while( tickets > 0 )
    {
      System.out.println( Thread.currentThread().getName( ) + " 出售票 " + tickets );
      tickets -= 1;
    }
  }
}

2 執行

Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:708)
at ThreadDemo.main(ThreadDemo.java:16)

3 說明

一個執行緒只能啟動一次

二 main方法中產生4個執行緒

1 程式碼

public class ThreadDemo
{
  public static void main(String[]args)
  {
    // 啟動了四個執行緒,分別執行各自的操作
    new TestThread( ).start( );
    new TestThread( ).start( );
    new TestThread( ).start( );
    new TestThread( ).start( );
  }
}
class TestThread extends Thread
{
  private int tickets = 5;
  public void run( )
  {
    while (tickets > 0)
    {
      System.out.println(Thread.currentThread().getName() + " 出售票 " + tickets);
      tickets -= 1;
    }
  }
}

2 執行

Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1
Thread-1 出售票 5
Thread-1 出售票 4
Thread-1 出售票 3
Thread-1 出售票 2
Thread-1 出售票 1
Thread-2 出售票 5
Thread-2 出售票 4
Thread-2 出售票 3
Thread-2 出售票 2
Thread-2 出售票 1
Thread-3 出售票 5
Thread-3 出售票 4
Thread-3 出售票 3
Thread-3 出售票 2

Thread-3 出售票 1

三 使用Runnable介面實現多執行緒,並實現資源共享

1 程式碼

public class RunnableDemo
{
  public static void main( String[] args )
  {
    TestThread newTh = new TestThread( );
    // 啟動了四個執行緒,並實現了資源共享的目的
    new Thread( newTh ).start( );
    new Thread( newTh ).start( );
    new Thread( newTh ).start( );
    new Thread( newTh ).start( );
  }
}
class TestThread implements Runnable
{
  private int tickets = 5;
  public void run( )
  {
    while( tickets > 0 )
    {
      System.out.println( Thread.currentThread().getName() + " 出售票 " + tickets );
      tickets -= 1;
    }
  }
}

2 執行

Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1

更多java相關內容感興趣的讀者可檢視本站專題:《Java面向物件程式設計入門與進階教程》、《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總

希望本文所述對大家java程式設計有所幫助。