스레드 풀 (자바 시리즈를 구 멀티는 스레드)

스레드 풀

1. 스레드 풀 무엇입니까

그것은 다중 스레드 응용 프로그램 초기화 과정에서 스레드의 집합을 만들 스레드 풀 스레드를 재사용하는 의미, 당신은 새로운 작업을 수행하기보다는 새 스레드를 만들어야합니다. 스레드 풀의 스레드 수는 일반적으로 사용 가능한 메모리의 양 및 응용 프로그램의 요구 사항에 따라 달라집니다. 풀의 각 스레드는 작업이 완료되면, 스레드 뒤쪽에 수영장과 한 번에 할당 된 작업이 기다리고 작업을 할당되었습니다.

2, 스레드 풀의 역할

① 스레드 풀은 애플리케이션의 응답 시간을 향상시킬 수 있도록 지원합니다. 풀의 스레드가 준비 할당 할 작업을 기다리고로서, 응용 프로그램이 직접 새 스레드를 사용하지 않고 사용할 수 있습니다.

각각의 짧은 수명주기 작업은 전체 스레드 ② 스레드 풀을 생성하고, 작업이 완료된 후 자원을 복구 할 수 있습니다.

③ 스레드 풀 스레드 타임 슬라이스는 현재 시스템에서 실행되는 프로세스에 따라 최적화된다.

④ 스레드 풀은 각 스레드에 대한 속성을 설정하지 않고 열려있는 여러 작업에 우리를 할 수 있습니다.

3, 자바는 네 개의 스레드 풀을 제공합니다

3.1, newCachedThreadPool

재활용하지 않을 경우 치료가 필요한 경우, 유연성, 새로운 스레드를 대기 스레드를 확보하는 것보다 더 이상 캐시 스레드 풀, 스레드 풀을 만들기.

public class CachedThreadPoolDemo {

    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newCachedThreadPool();
        for (int i = 1; i <= 10; i++) {
            final int index = i;
            threadPool.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "=====" + index);
                }
            });
        }
    }

}
3.2 인 newFixedThreadPool

고정 길이 스레드 풀을 만들고, 동시 스레드의 최대 수를 제어 할 수 있습니다, 초과 스레드는 큐에 대기합니다.

public class FixedThreadPoolDemo {
    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newFixedThreadPool(3);
        for (int i = 1; i <= 10; i++) {
            final int index = i;
            threadPool.execute(() -> {
                System.out.println(Thread.currentThread().getName() + "=====" + index);
            });
        }
    }
}

3.3 인 newScheduledThreadPool

정기적이고주기적인 작업 실행을 지원하기 위해 고정 길이 스레드 풀을 만듭니다.

public class ScheduledThreadPoolDemo {

    public static void main(String[] args) {
        ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(3);
        for (int i = 1; i <= 10; i++) {
            threadPool.schedule(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + ":延迟3秒打印log");
                }
            }, 3, TimeUnit.SECONDS);
        }
    }

}
3.4 newSingleThreadExecutor

단일 스레드 스레드 풀을 생성, 그것은 단지 하나의 스레드 작업은 모든 작업이 지정된 순서로 수행되는 것을 보장하기 위해 작업을 수행 할 수 있습니다.

public class SingleThreadExecutorDemo {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        for (int i = 1; i <= 10; i++) {
            final int index = i;
            executorService.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "===" + index);
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}

소스 주소

추천

출처www.cnblogs.com/3LittleStones/p/12105520.html