JavaRush /Blog Java /Random-ES /Pausa para el café #159. Ciclo de vida de un hilo en Java...

Pausa para el café #159. Ciclo de vida de un hilo en Java. Interfaces funcionales y métodos predeterminados en Java 8

Publicado en el grupo Random-ES

Ciclo de vida de un hilo en Java

Fuente: Medio Este artículo analiza los diferentes estados del ciclo de vida de los subprocesos en Java. Pausa para el café #159.  Ciclo de vida de un hilo en Java.  Interfaces funcionales y métodos predeterminados en Java 8 - 1El ciclo de vida de un hilo en Java consiste principalmente en transiciones a varios estados, comenzando con el nacimiento del hilo y terminando con la terminación del hilo. Un hilo está listo para ejecutarse cuando se crea e inicia llamando al método start() en la clase Thread . Cuando se llama al método sleep() o wait() de la clase Thread , el hilo queda inutilizable. Para gestionar subprocesos mediante programación, es importante identificar el estado del subproceso. Entendamos cómo el ciclo de vida de un hilo Java determina su estado. Esto es lo que dice la documentación de Java al respecto: Un subproceso es una ruta de ejecución de un programa que puede entrar en uno de cinco estados durante su ciclo de vida:
  1. Nuevo
  2. Ejecutable
  3. Correr
  4. Obstruido
  5. Muerto
1. Nuevo (estado recién nacido) ocurre cuando crea un objeto Thread en la clase Thread. El flujo se crea y se encuentra en un estado "recién nacido". Es decir, cuando se crea un hilo, entra en un nuevo estado, pero el método start() aún no se ha llamado en la instancia. 2. Ejecutable. Este estado significa que el hilo está listo para ejecutarse. Cuando se llama al método start() en un nuevo hilo, está listo para comenzar. En este estado, el subproceso espera hasta que el procesador esté disponible (tiempo de CPU). Es decir, el hilo se convierte en una cola (serie) de hilos esperando ser ejecutados. 3. En ejecución (estado de ejecución). Ejecutar significa que el procesador ha asignado un intervalo de tiempo para que se ejecute el hilo. Este es el estado en el que el hilo realiza su función real. 4. Bloqueado (estado bloqueado). Un hilo está en un estado bloqueado cuando se detiene, duerme o espera un tiempo para satisfacer una condición determinada. 5. Estado muerto. Esta condición ocurre cuando el método run() termina de ejecutar instrucciones. El hilo se detiene automáticamente o entra en estado muerto. En otras palabras, cuando un hilo sale del método run() , termina o queda inactivo.

Interfaces funcionales y métodos predeterminados en Java 8

Fuente: Medio En este artículo, conocerá algunos de los cambios introducidos en Java 8, es decir, interfaces funcionales y métodos predeterminados.

¿Qué son los métodos predeterminados?

Sabemos que las clases abstractas pueden tener métodos abstractos y no abstractos (métodos que se implementan), pero las interfaces son 100% abstractas (todos estos métodos solo tienen firma y no implementación). Pero ¿qué pasa si necesitamos una interfaz en lugar de una clase y una funcionalidad común entre todas las clases implementadas? Porque luego el código de implementación se repite una y otra vez en cada clase que implementa la interfaz. Para evitar esto, Java 8 agregó la palabra clave predeterminada . Si tenemos un método que está implementado en una interfaz, entonces se debe asignar la palabra clave predeterminada a ese método; de lo contrario, obtendremos un error de tiempo de ejecución.

¿Qué es una interfaz funcional?

Las interfaces funcionales no son más que interfaces con un método abstracto y cualquier número de métodos estándar o estáticos. Un ejemplo de interfaz funcional es Comparable, que tiene un método abstracto, compareTo() . A su vez, Runnable tiene un método run() y así sucesivamente. También podemos representar una interfaz funcional usando la anotación @FunctionalInterface. Garantiza que una interfaz tenga solo un método abstracto:
@FunctionalInterface
public interface MyfunctionalInterface{
   public void myabstractmethod();
   public static void method1(){
       //Имплементация
    }
   public default void method2(){
       //Имплементация
    }
}

Tipos de interfaces funcionales

Consumidor : toma un argumento y no devuelve nada.
  • Las tres variantes de Consumer son DoubleConsumer, IntConsumer y LongConsumer (dependiendo del tipo de argumentos que acepten).
  • Bi-Consumidor: toma dos argumentos y no devuelve nada.
Predicado : toma un argumento y devuelve un valor booleano.
  • Las tres variantes de Predicate son DoublePredicate, IntPredicate y LongPredicate (dependiendo del tipo de argumentos que acepten).
  • Bi-Predicado: toma dos argumentos y devuelve un valor booleano.
Función : toma un argumento y devuelve un valor.
  • Muchas versiones de funciones están disponibles como tipos de argumentos, siendo int , long y double los más utilizados.
  • Bifunción: toma dos argumentos y devuelve un valor.
  • Los operadores unario y binario implementan función y bifunción respectivamente, pero la condición adicional aquí es que la entrada y la salida deben ser idénticas y del mismo tipo.
Proveedor : no acepta ninguna entrada pero devuelve un valor único. Varias versiones de Proveedor: BooleanSupplier, IntSupplier, LongSupplier y DoubleSupplier, para las cuales los tipos de devolución son las primitivas correspondientes.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION