- Java并發編程之美
- 翟陸續 薛賓田
- 310字
- 2019-07-25 11:54:01
1.8 理解線程上下文切換
在多線程編程中,線程個數一般都大于CPU個數,而每個CPU同一時刻只能被一個線程使用,為了讓用戶感覺多個線程是在同時執行的,CPU資源的分配采用了時間片輪轉的策略,也就是給每個線程分配一個時間片,線程在時間片內占用CPU執行任務。當前線程使用完時間片后,就會處于就緒狀態并讓出CPU讓其他線程占用,這就是上下文切換,從當前線程的上下文切換到了其他線程。那么就有一個問題,讓出CPU的線程等下次輪到自己占有CPU時如何知道自己之前運行到哪里了?所以在切換線程上下文時需要保存當前線程的執行現場,當再次執行時根據保存的執行現場信息恢復執行現場。
線程上下文切換時機有:當前線程的CPU時間片使用完處于就緒狀態時,當前線程被其他線程中斷時。