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 出售票 2Thread-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程式設計有所幫助。