Java多線程運行機制的基本原理
進程和線程的區別
進程
進程是一個程序執行的實例,比如說我們打開10個IE瀏覽器窗口,那么就有10個進程開啟。一個進程可以同時被運行若干次,進程是CPU進行資源分配和調度的基本單位。
線程
線程是比進程更小的運行單位,一個進程只少有一個(主線程)或多個線程,每個線程在完成不同的任務,當線程內的多個線程在同時運行時,這種方式叫做並發。多個線程的使用大大提高了程序執行效率和處理能力。
進程與線程的區別
每個進程都需要操作系統為其分配獨立的內存地址空間,而同一進程中的所有線程在同一內存地址空間,它們共享同一塊內存空間中的資源。
創建線程有兩張方式:
1、繼承Thread類
2、實現Runnable接口,但是Runnable接口中沒有start()方法,所以還需要new一個新的Thread線程來啟動實現Runnable的子類。
線程同步
線程同步是為了解決多個線程對同一塊數據資源進行讀寫操作而產生的錯誤。這就需要對數據的操作進行加鎖,synchronized
實現線程同步有兩種方式,一種是同步語句塊,一種是同步方法。
線程的生命周期
線程有5種狀態:新建、就緒、運行、阻塞、死亡。每種狀態都是可以相互轉換的。