JavaRush /Java 博客 /Random-ZH /喝咖啡休息#159。Java 中线程的生命周期。Java 8 中的函数式接口和默认方法

喝咖啡休息#159。Java 中线程的生命周期。Java 8 中的函数式接口和默认方法

已在 Random-ZH 群组中发布

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