1. 程式人生 > 其它 >Java多執行緒介面和類

Java多執行緒介面和類

多執行緒被認為是計算機程式設計中更復雜的主題之一,特別是在 Java 中。在應用程式中正確使用多執行緒需要高水平的技能、知識和經驗。

  以下是Java中多執行緒介面和類的一些核心概念和解釋:

  執行緒:在Java中,執行緒類是與多執行緒相關的最重要的類。執行緒可以通過擴充套件這個類來實現。本文稍後將演示它的用法。在生產或開發環境中,開發人員可能會發現修復與多執行緒相關的問題非常困難。瞭解鎖可能有助於解決最令人困惑和最常見的錯誤,即使是經驗豐富的 Java 程式設計師也難以理解。

  Runnable:Runnables 是另一種建立執行緒的方法。你可以通過實現 Runnable 介面或擴充套件執行緒類在 Java 中建立執行緒。在這種情況下,開發人員必須從這個介面重寫 run() 方法來實現邏輯。(注意:Thread 類已經實現了 Runnable)。為了更好地理解多執行緒,請嘗試在下面顯示的每個方法中記住共享物件的鎖定狀態(如果適用)。

  start(), Lock Status:可以獲取鎖。排程執行緒執行時呼叫此方法。執行緒一旦被排程並且 CPU 週期可用,就會執行。

  run(), Lock Status:可以獲取鎖;它被 Thread 執行時隱式呼叫,以開始執行執行緒。

  yield(), Lock Status:鎖被持有;這種特殊的方法要麼產生或將控制權轉移到具有相同優先順序的不同執行緒。不能保證它將控制權轉移到哪個執行緒——或者它是否會轉移控制權——並不能保證。下面的示例程式碼顯示瞭如何通過擴充套件執行緒類在 Java 中建立執行緒。

sleep(), Lock Status:鎖被持有;使用此方法將導致當前正在執行的執行緒在給定的時間內暫停其執行。可以以毫秒為單位指定執行暫停的時間量。將丟擲一箇中斷的異常,程式設計師需要解決這個問題。

  join(), Lock Status:鎖被持有;使用它會導致執行模式,導致所有執行緒在當前執行緒的末尾加入。在這種情況下,當前執行緒在切換到另一個執行緒之前會繼續完成。這也會引發一箇中斷的異常,開發人員需要解決這個異常。

  suspend(), Lock Status:鎖被持有;這已被棄用。

  resume(),鎖狀態:鎖被持有;這已被棄用;這兩個執行緒都已被棄用,因為它們會導致死鎖和凍結程序。

  stop(), Lock Status:鎖被釋放; 這已被棄用; 這種特殊的執行緒方法已被棄用,因為它由於損壞的物件而建立了不規則的狀態。不建議使用。

  Java 物件類和多執行緒

  Java 的 Object 類固有地包含用於控制訪問該物件的方法,尤其是在共享或多執行緒應用程式中。

  wait(),Lock Status:當前物件鎖釋放,其他鎖被持有; 使用 wait() 方法將導致當前執行緒停止執行並進入等待狀態。這也將釋放它放置在當前物件上的鎖,同時保留其他物件上的所有其他鎖。

  notify(),鎖狀態:鎖被隨機等待執行緒獲取; notify() 方法將通知正在等待獲取當前共享物件上的鎖的執行緒。

  notifyAll(),鎖狀態:鎖被任意執行緒獲取,等待獲取當前共享物件的鎖。將使用此方法通知所有等待獲取執行緒鎖的執行緒。

  多執行緒和併發程式中常遇到的有Memory-interface、競爭條件、死鎖、活鎖和飢餓。問題是沒有止境的,如果你弄錯了,將很難發現和除錯。這是大多數基於面試的,而不是基於實際應用的Java執行緒問題。想學習java多執行緒的同學建議通過參加java培訓來提升自己,在專業老師的指導下,可以獲得很大進步。

Java入門推薦:www.bilibili.com/video/BV1UY…


作者:程式設計研究員
連結:https://juejin.cn/post/7088868063235276837
來源:稀土掘金
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。