多線程執行是cpu搶占時間片的方式執行。多線程創建并切換到另一個線程的過程,稱之為線程的上下文切換。
如何減少上下文切換
減少上下文切換的方法有無鎖并發編程、CAS算法、使用最少線程和使用協程。無鎖并發編程。多線程競爭鎖時,會引起上下文切換,所以多線程處理數據時,可以用一 些辦法來避免使用鎖,如將數據的ID按照Hash算法取模分段,不同的線程處理不同段的數據。
CAS算法。Java的Atomic包使用CAS算法來更新數據,而不需要加鎖。
使用最少線程。避免創建不需要的線程,比如任務很少,但是創建了很多線程來處理,這樣會造成大量線程都處于等待狀態。
協程:在單線程里實現多任務的調度,并在單線程里維持多個任務間的切換。