JavaRush /Java Blog /Random-TW /喝咖啡休息#159。Java 中執行緒的生命週期。Java 8 中的函數式介面與預設方法

喝咖啡休息#159。Java 中執行緒的生命週期。Java 8 中的函數式介面與預設方法

在 Random-TW 群組發布

Java中執行緒的生命週期

資料來源:Medium 本文討論 Java 中線程的不同生命週期狀態。 喝咖啡休息#159。 Java 中執行緒的生命週期。 Java 8 中的函數式介面和預設方法 - 1Java中執行緒的生命週期主要由各種狀態的轉換組成,從執行緒誕生開始,到執行緒終止結束。當執行緒被建立並透過呼叫 Thread 類別的 start() 方法啟動時,執行緒就準備好運行。當Thread類別的sleep()wait()方法被呼叫時,執行緒變得不可用。要以程式設計方式管理線程,識別線程的狀態非常重要。讓我們來了解一下Java執行緒的生命週期是如何決定其狀態的。Java 文件對此是這麼說的:執行緒是一個程式執行路徑,在其生命週期中可以進入以下五種狀態之一:
  1. 新的
  2. 可運行
  3. 跑步
  4. 被阻止
  5. 死的
1、New(新生狀態)是在Thread類別中創建Thread物件時發生的。流已建立並處於“新生”狀態。也就是說,當一個執行緒被建立時,它會進入一個新的狀態,但是實例上還沒有呼叫 start()方法。2.可運行。此狀態表示執行緒已準備好運行。當新執行緒呼叫start()方法時,它就準備好啟動了。在此狀態下,執行緒將等待,直到處理器變得可用(CPU 時間)。也就是說,線程變成等待執行的線程隊列(系列)。 3.運行(運行狀態)。執行意味著處理器已經為執行緒分配了執行的時隙。這是執行緒執行其實際功能的狀態。 4.阻塞(阻塞狀態)。當執行緒暫停、休眠或等待一段時間以滿足給定條件時,執行緒處於阻塞狀態。 5.死亡狀態。當run()方法完成執行指令時,就會發生這種情況。執行緒自動停止或進入死亡狀態。換句話說,當執行緒退出run()方法時,它要么終止,要么死亡。

Java 8 中的函數式介面與預設方法

來源: Medium 在本文中,您將了解 Java 8 中引入的一些更改,即函數式介面和預設方法。

什麼是預設方法?

我們知道抽象類別可以有抽象方法和非抽象方法(實現的方法),但介面是100%抽象的(所有這些方法只有簽名而沒有實現)。但是,如果我們需要一個介面而不是類別以及所有實作的類別之間的通用功能怎麼辦?因為這樣在每個實作介面的類別中都會一次又一次地重複實作程式碼。為了避免這種情況,Java 8 新增了default關鍵字。如果我們有一個在介面中實作的方法,那麼必須將 default 關鍵字指派給該方法,否則我們將收到執行時間錯誤。

什麼是函數式介面?

函數式介面只不過是具有一個抽象方法和任意數量的標準或靜態方法的介面。函數式介面的一個範例是 Comparable,它有一個抽象方法compareTo()。反過來,Runnable 有一個run()方法等等。我們也可以使用@FunctionalInterface註解來表示函數式介面。它確保一個介面只有一個抽象方法:
@FunctionalInterface
public interface MyfunctionalInterface{
   public void myabstractmethod();
   public static void method1(){
       //Имплементация
    }
   public default void method2(){
       //Имплементация
    }
}

功能介面的類型

消費者- 接受一個參數並且不回傳任何內容。
  • Consumer 的三個變體是 DoubleConsumer、IntConsumer 和 LongConsumer(取決於它們接受的參數類型)。
  • Bi-Consumer - 接受兩個參數並且不傳回任何內容。
謂詞- 接受一個參數並傳回一個布林值。
  • Predicate 的三個變體是 DoublePredicate、IntPredicate 和 LongPredicate(取決於它們接受的參數類型)。
  • 雙謂詞 - 接受兩個參數並傳回一個布林值。
函數- 接受一個參數並傳回一個值。
  • 許多版本的函數可用作參數類型,其中intlongdouble是最常用的。
  • 雙功能 - 接受兩個參數並傳回一個值。
  • 一元和二元運算子分別實作 Function 和 Bi-Function,但這裡的附加條件是輸入和輸出必須相同且類型相同。
供應商- 不接受任何輸入,但傳回單一值。供應商的各種版本:BooleanSupplier、IntSupplier、LongSupplier 和 DoubleSupplier,其傳回類型是對應的原語。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION