回覆列表
  • 1 # ogilk40144

    Java偏向鎖(Biased Locking)是Java 6引入的一項多執行緒最佳化。它透過消除資源無競爭情況下的同步原語,進一步提高了程式的執行效能。輕量級鎖也是一種多執行緒最佳化,它與偏向鎖的區別在於,輕量級鎖是透過CAS來避免進入開銷較大的互斥操作,而偏向鎖是在無競爭場景下完全消除同步,連CAS也不執行(CAS本身仍舊是一種作業系統同步原語,始終要在JVM與OS之間來回,有一定的開銷)。所謂的無競爭場景,舉個例子,就是單執行緒訪問帶同步的資源或方法。偏向鎖實現原理偏向鎖,顧名思義,它會偏向於第一個訪問鎖的執行緒,如果在接下來的執行過程中,該鎖沒有被其他的執行緒訪問,則持有偏向鎖的執行緒將永遠不需要觸發同步。如果在執行過程中,遇到了其他執行緒搶佔鎖,則持有偏向鎖的執行緒會被掛起,JVM會嘗試消除它身上的偏向鎖,將鎖恢復到標準的輕量級鎖。(偏向鎖只能在單執行緒下起作用)

  • 2 # 使用者3279630842812

    1.一部分使用者介面(UI)程式(如Windows視窗程式)是以使用者操作驅動的,程式的主執行緒必須不間斷地地等待和響應使用者操作,也就是說不是在等待使用者輸入就是在處理使用者輸入。這時如果有個運算需要長時間持續執行,假如讓主執行緒執行它,執行時間內就無法響應使用者操作。可以為它建立一個獨立的執行緒,它獨立工作,不受使用者操作影響,而主執行緒也能繼續快速響應使用者操作;

    2.伺服器需要並行處理多個客戶端輸入;

    3.大規模運算透過同時佔用多個CPU核心提高運算速度;

    4.程式有運算,同時還需要與一個或多個IO較慢的輸入輸出裝置進行資料交換。 打個比方,有些複雜的、系統性的任務就象是人體一樣,需要並行的做許多工作,例如,人需要同時呼吸,血液迴圈,消化食物,而不是先呼吸,然後血液迴圈,再消化食物。這樣的程式就需要用多執行緒,以有效的使用處理器和使用者的時間。

  • 中秋節和大豐收的關聯?
  • 天書奇談各個勇士聯盟幾級能做及任務經驗?