Multithreading
asia_university_multiThread
單執行緒
在 CTest class 裡面寫 run 的執行緒
在 main 裡面呼叫 CTest物件的 run
啟動執行緒
兩個執行緒
CTest2 extends Thread
new CTest2物件.start()
Thread 讓 CTest 開始時會跑 run
建立執行緒
兩個執行緒
如果類別本身已經繼承某個父類別
可以利用實作 Runnable 介面 的方式建立執行緒
- 介面 是實現多重繼承 的重要方式
- 把處理執行緒的程式碼,放在實作 Runnable 介面的類別中的run() 就可以建立執行緒
執行緒的產生和銷毀
- newly created
- runable
- blocked
- dead

newly created
- new Thread
- start() method
runable
blocked
執行緒不執行
-
- wait()
-
- sleep()
-
- 執行緒和另一個執行緒join()
blocked dismiss
- 如果執行緒是由呼叫物件的 wait() method 所凍結,則該物件的 notify() method 被呼叫時可解除凍結
- 執行緒sleep(),但時間已到
dead
sleep
通常會先執行不須啟動執行緒的程式
main() method 本身也是一個執行緒,通常system.out.println()會先執行,因為會先執行不須啟動執行緒的程式。
join
執行緒.join() => 先執行