線程,進程知識點回顧,總有你需要的(面試必備!)

進程:進程是一個具有獨立功能的程序關於某個數據集合的一次運行活動,即“運行中的程序”。

線程:被稱爲“輕量級進程”,是程序執行流的最小單元。

一個進程可包括多個線程。一個線程不可獨立存在,它必須是進程的一部分。一個進程一直運行,直到所有非等候的線程運行結束後才能結束,一般主線程結束後進程也就結束了。

進程的五種狀態:


1.新建狀態 // 如New Thread()時。

2.就緒狀態 // 調用start()方法時,start()方法創建線程運行的系統資源,並調度線程運行run()方法。但run()方法可能不會馬上執行。

3.運行狀態 // 線程獲得CPU時,真正運行run()方法。一個時刻只有一個線程處於運行狀態。

4.阻塞狀態 // sleep()方法進入阻塞;線程試圖得到一個鎖,但這個鎖被其他線程持有;線程在等待某個觸發事件。阻塞狀態是正在運行的線程沒有運行結束,暫時讓出CPU,這時處於就緒狀態的其他線程便可以佔有cpu,進入運行狀態。

5.死亡狀態 // 1.run()方法正常退出而自然死亡  2.一個未捕獲的異常終止了run()方法。

synchronize關鍵字:

可以有synchronize方法和synchronize語句。有了它的保護,我們可以確保兩個或兩個以上的運行線程不會互相干擾。一般方法體執行完畢就會釋放鎖。

volatile變量:

線程每次在使用volatile修飾的變量時,都會從內存中讀取變量最後修改的值。但並不能用來原子性操作。

ReentrantLock互斥鎖:

Look需要手動釋放鎖,lock()是加鎖,unlock()是釋放鎖,互斥區放在try()裏面,unLock()放在finally()裏面


ps:學習是漫長的過程,加油每一天。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章