JavaRush /Java Blog /Random-KO /커피 브레이크 #159. Java 스레드의 수명주기. Java 8의 기능적 인터페이스 및 기본 메소드

커피 브레이크 #159. Java 스레드의 수명주기. Java 8의 기능적 인터페이스 및 기본 메소드

Random-KO 그룹에 게시되었습니다

Java의 스레드 수명주기

출처: 중간 이 기사에서는 Java 스레드의 다양한 수명 주기 상태에 대해 설명합니다. 커피 브레이크 #159.  Java 스레드의 수명주기.  Java 8 - 1의 기능적 인터페이스 및 기본 메소드Java에서 스레드의 라이프사이클은 주로 스레드 생성으로 시작하여 스레드 종료로 끝나는 다양한 상태로의 전환으로 구성됩니다. Thread 클래스 의 start() 메서드를 호출하여 스레드를 만들고 시작하면 스레드를 실행할 준비가 된 것입니다 . Thread 클래스의 sleep() 또는 wait() 메서드가 호출되면 스레드를 사용할 수 없게 됩니다. 프로그래밍 방식으로 스레드를 관리하려면 스레드 상태를 식별하는 것이 중요합니다. Java 스레드의 라이프사이클이 상태를 어떻게 결정하는지 이해해 봅시다. 이에 대한 Java 문서의 내용은 다음과 같습니다. 스레드는 수명 주기 동안 다섯 가지 상태 중 하나에 들어갈 수 있는 프로그램 실행 경로입니다.
  1. 새로운
  2. 실행 가능
  3. 달리기
  4. 막힌
  5. 죽은
1. New(신생 상태)는 Thread 클래스에서 Thread 객체를 생성할 때 발생합니다. 흐름이 생성되고 "신생" 상태에 있습니다. 즉, 스레드가 생성되면 새로운 상태로 들어가지만 인스턴스에서 start() 메서드가 아직 호출되지 않았습니다. 2. 실행 가능. 이 상태는 스레드가 실행될 준비가 되었음을 의미합니다. 새 스레드에서 start() 메서드가 호출 되면 시작할 준비가 됩니다. 이 상태에서 스레드는 프로세서가 사용 가능해질 때까지(CPU 시간) 기다립니다. 즉, 스레드는 실행을 기다리는 스레드의 대기열(시리즈)이 됩니다. 3. 실행 중(실행 중 상태). 실행이란 프로세서가 스레드를 실행할 시간 슬롯을 할당했음을 의미합니다. 스레드가 실제 기능을 수행하는 상태입니다. 4. 차단됨(차단된 상태). 스레드가 일시 중지되거나, 휴면 상태에 있거나, 주어진 조건을 충족하기 위해 일정 시간 동안 대기하는 경우 차단된 상태입니다. 5. 죽은 상태. 이 조건은 run() 메서드가 명령 실행을 완료할 때 발생합니다. 스레드가 자동으로 중지되거나 Dead 상태가 됩니다. 즉, 스레드가 run() 메서드를 종료하면 스레드가 종료되거나 종료됩니다.

Java 8의 기능적 인터페이스 및 기본 메소드

출처: Medium 이 기사에서는 Java 8에 도입된 일부 변경 사항, 즉 기능적 인터페이스와 기본 메서드에 대해 알아봅니다.

기본 방법이란 무엇입니까?

우리는 추상 클래스가 추상 메소드와 비추상 메소드(구현된 메소드)를 가질 수 있다는 것을 알고 있습니다. 그러나 인터페이스는 100% 추상입니다(이 모든 메소드에는 서명만 있고 구현은 없습니다). 하지만 클래스 대신 인터페이스가 필요하고 구현된 모든 클래스 간에 공통 기능이 필요한 경우에는 어떻게 해야 할까요? 왜냐하면 구현 코드는 인터페이스를 구현하는 각 클래스에서 반복해서 반복되기 때문입니다. 이를 방지하기 위해 Java 8에는 기본 키워드 가 추가되었습니다 . 인터페이스에 구현된 메서드가 있는 경우 해당 메서드에 기본 키워드를 할당해야 합니다. 그렇지 않으면 런타임 오류가 발생합니다.

기능적 인터페이스란 무엇입니까?

기능적 인터페이스는 하나의 추상 메서드와 여러 개의 표준 또는 정적 메서드가 있는 인터페이스일 뿐입니다. 기능적 인터페이스의 예로는 CompareTo()라는 하나의 추상 메서드가 있는 Comparable이 있습니다 . Runnable에는 run() 메서드 등이 있습니다. @FunctionalInterface 주석을 사용하여 기능적 인터페이스를 나타낼 수도 있습니다. 인터페이스에 하나의 추상 메서드만 있는지 확인합니다.
@FunctionalInterface
public interface MyfunctionalInterface{
   public void myabstractmethod();
   public static void method1(){
       //Имплементация
    }
   public default void method2(){
       //Имплементация
    }
}

기능적 인터페이스 유형

소비자 - 하나의 인수를 취하고 아무것도 반환하지 않습니다.
  • Consumer의 세 가지 변형은 DoubleConsumer, IntConsumer 및 LongConsumer입니다(허용되는 인수 유형에 따라 다름).
  • 이중 소비자 - 두 개의 인수를 사용하고 아무것도 반환하지 않습니다.
조건자 - 하나의 인수를 취하고 부울 값을 반환합니다.
  • Predicate의 세 가지 변형은 DoublePredicate, IntPredicate 및 LongPredicate입니다(허용되는 인수 유형에 따라 다름).
  • Bi-Predicate - 두 개의 인수를 사용하고 부울 값을 반환합니다.
함수 - 하나의 인수를 취하고 하나의 값을 반환합니다.
  • 많은 버전의 함수를 인수 유형으로 사용할 수 있으며 int , longdouble이 가장 일반적으로 사용됩니다.
  • 이중 기능 - 두 개의 인수를 사용하고 하나의 값을 반환합니다.
  • Unary 및 Binary 연산자는 각각 Function 및 Bi-Function을 구현하지만 여기서 추가 조건은 입력과 출력이 동일하고 동일한 유형이어야 한다는 것입니다.
공급업체 - 입력을 허용하지 않지만 단일 값을 반환합니다. 다양한 버전의 공급자: BooleanSupplier, IntSupplier, LongSupplier 및 DoubleSupplier. 반환 유형은 해당 프리미티브입니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION