02- 스레드-기본 스레드 메커니즘

기본 스레딩 메커니즘

집행자

Executor 관리자 스레드의 수명주기는 우리가 사용할 수있는 여러 가지 방법을 제공합니다.

Executor의 상속 시스템
여기에 사진 설명 삽입
ThreadPoolExecutor에 의해 구현 된 최상위 인터페이스는 Executor이고 최상위 인터페이스 Executor는 작업 제출과 작업 실행을 분리하는 아이디어를 제공합니다. 사용자는 스레드를 생성하는 방법과 작업을 수행하기 위해 스레드를 예약하는 방법에주의를 기울일 필요가 없습니다. 사용자는 Runnable 객체를 제공하고 실행중인 작업 논리를 Executor에 제출하기 만하면됩니다. Executor 프레임 워크는 스레드 배포를 완료하고 작업 실행. ExecutorService 인터페이스는 다음과 같은 몇 가지 기능을 추가합니다. (1) 작업 실행 기능 확장, 하나 또는 일련의 비동기 작업에 대한 Futures를 생성 할 수있는 메서드 보완, (2) 스레드 풀 제어 방법 제공 (예 : 실행 중지) 스레드 풀. AbstractExecutorService는 하위 계층의 구현이 작업을 실행하는 한 가지 방법에만 집중할 수 있도록 작업을 연속적으로 실행하는 프로세스를 연결하는 상위 수준의 추상 클래스입니다. 최하위 구현 클래스 인 ThreadPoolExecutor는 가장 복잡한 작업 부분을 구현합니다 .ThreadPoolExecutor는 한편으로는 자체 라이프 사이클을 유지하고 동시에 스레드와 작업을 관리하므로 둘을 결합하여 병렬 작업을 수행 할 수 있습니다.

검색 출처 : https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html

대 모실

읽기 자료 : https://blog.csdn.net/shimiso/article/details/8964414

모든 비 데몬 스레드가 종료되면 프로그램이 종료되고 모든 데몬 스레드가 동시에 종료됩니다.

main ()은 데몬이 아닌 스레드입니다.

스레드가 시작되기 전에 setDaemon () 메서드를 사용하여 스레드를 데몬 스레드로 설정합니다.

public static void main(String[] args) {
    
    
    Thread thread = new Thread(new MyRunnable());
    thread.setDaemon(true);
}

기다림, 수면, 양보

阅读 素材 一 : https://javarevisited.blogspot.com/2011/12/difference-between-wait-sleep-yield.html#axzz6n07ehEDk
이 차이점은 스레드가 wait () 메서드를 호출 할 때 더 분명합니다. , 모니터를 해제하거나 해당 객체에 고정하고 있던 잠금을 해제하지만 스레드가 sleep () 메서드를 호출 할 때 유지중인 경우에도 모니터를 해제하지 않습니다.

yield ()로 돌아 오면 wait () 및 sleep ()과는 약간 다르며, Thread에서 CPU 보류를 해제하여 누가 CPU를 받을지 보장되지는 않지만 다른 스레드가 실행할 기회를 제공합니다.

읽기 자료 2 : https://www.cnblogs.com/aspirant/p/8876670.html

wait () : 스레드가 wait () 메서드를 호출하면 해당 객체에 대해 보유하고 있던 모니터 또는 잠금을 해제합니다.

sleep () : 스레드가 sleep () 메서드를 호출 할 때 모니터가 보류 중이더라도 절대로 해제하지 않습니다.

yeild () : 누가 CPU를 받을지 보장되지는 않지만 다른 스레드가 실행할 기회를주기 위해 Thread의 CPU 보류를 해제합니다.

추천

출처blog.csdn.net/qq_41729287/article/details/113886883