Thread和Runnable區別多線程
- Thread實現了Runnable接口,在執行多線程以前還分配了CPU資源,檢查線程是否啓動等事情,而後再執行線程。
- Runnable適合多個相同程序代碼的線程去處理同一個資源。
- Runnable接口能夠避免Java單繼承的侷限。
- Runable增長了程序的健壯型,代碼可以被多個線程共享,數據和代碼是獨立的。
線程狀態線程
五種狀態:建立,就緒,運行,阻塞,終止。繼承
線程使用start()後不會馬上啓動,而是處於就緒狀態,等待CPU調度後纔開始。接口
進程和線程的區別進程
- 線程在進程基礎上劃分。
- 線程消失,進程還繼續。進程消失,線程結束。
- 進程是程序運行和資源分配的基本單位,一個程序至少有一個進程,一個進程至少有一個線程。
- 線程是進程的實體,是CPU調度和分派的基本單位,比程序更小的能獨立運行的基本單位。
多線程實現的兩種方式資源
線程啓動開發
經過start()方法完成,須要進行CPU調度,調用start()其實是run()方法。it
線程終止基礎
- stop(),容易有問題,已通過時
- volatile變量看成控制條件,控制線程執行。
- interrupt來使處於sleep() wait()等狀態的線程終止。
- 用Future的cancel方法也能夠終止線程。
多線程中建議使用Runnable接口實現,這樣能夠避免由單繼承所帶來的開發局限,使用Runnable接口能夠達到資源共享的目的。變量