>Java >Java베이스 >Java의 스레드 풀이란 무엇입니까?

Java의 스레드 풀이란 무엇입니까?

(*-*)浩
(*-*)浩원래의
2019-11-12 09:03:012346검색

스레드 풀은 처리 중에 작업을 대기열에 추가한 다음 스레드가 생성된 후 자동으로 이러한 작업을 시작하는 멀티스레딩 처리의 한 형태입니다. 스레드 풀 스레드는 백그라운드 스레드입니다. 각 스레드는 기본 스택 크기를 사용하고 기본 우선순위로 실행되며 다중 스레드 아파트 에 있습니다.

Java의 스레드 풀이란 무엇입니까?

스레드가 관리 코드에서 유휴 상태인 경우(예: 누군가를 기다리는 중) 이벤트) 스레드 풀은 모든 프로세서를 계속 사용하기 위해 다른 작업자 스레드를 삽입합니다.

모든 ​​스레드 풀 스레드가 항상 사용 중이지만 대기열에 보류 중인 작업이 있는 경우 스레드 풀은 잠시 후 다른 작업자 스레드를 생성하지만 스레드 수가 최대값을 초과하지 않습니다. 최대값을 초과하는 스레드는 큐에 들어갈 수 있지만 다른 스레드가 완료될 때까지 시작되지 않습니다. (추천 학습: javacourse)

Java에서 4개의 스레드 풀 사용:

#🎜🎜 #Java는 Executor를 통해 다음과 같은 네 가지 스레드 풀을 제공합니다.


newCachedThreadPool은 스레드 풀의 길이가 처리 요구 사항을 초과하는 경우 유휴 스레드를 유연하게 재활용할 수 있습니다. 더 이상 재활용되지 않으면 새 스레드가 생성됩니다.


newFixedThreadPool은 최대 동시 스레드 수를 제어할 수 있는 고정 길이 스레드 풀을 생성하며 초과 스레드는 대기열에서 대기합니다.


newScheduledThreadPool은 예약되고 주기적인 작업 실행을 지원하는 고정 길이 스레드 풀을 생성합니다.


newSingleThreadExecutor는 작업을 실행하는 데 유일한 작업자 스레드만 사용하는 단일 스레드 스레드 풀을 생성하여 모든 작업이 지정된 순서(FIFO, LIFO, 우선 순위)로 실행되도록 보장합니다. .


newCachedThreadPool

스레드 풀 길이가 처리 요구 사항을 초과하는 경우 유휴 스레드를 유연하게 재활용할 수 있습니다. . 재활용이 없으면 새 스레드를 만듭니다. 샘플 코드는 다음과 같습니다:


package test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExecutorTest {
    public static void main(String[] args) {
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
        for (int i = 0; i < 10; i++) {
            final int index = i;
            try {
                Thread.sleep(index * 1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            cachedThreadPool.execute(new Runnable() {
                public void run() {
                    System.out.println(index);
                }
            });
        }
    }
}

위 내용은 Java의 스레드 풀이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.