[노트] Executors 프레임워크

4213 단어 프레임
프레임 구조
  • 작업: Runnable 및 Callable
  • 작업 수행: Executor 인터페이스 -> Executor 서비스 인터페이스
  • ThreadPoolExecutor
  • ScheduledThreadPoolExecutor

  • 비동기 계산 결과:Future 인터페이스 ->FutureTask 클래스
  • ThreadPoolExecutor
    new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime,timeunit,runnableTaskQueue,handler)
  • corePoolsize: 이 스레드 크기로 예열하고 새 스레드를 만들지 않으려면runnableTaskQueue에 넣으세요
  • maximumPoolsize:runnableTaskQueue가 가득 차야만 새로운 스레드를 만들 수 있습니다. 최대 스레드 수는 이 값을 초과하지 않습니다
  • runnableTaskQueue: 작업 대기열
  • handler: 포화 전략
  • AbortPolicy: 직접 포기

  • 일반적으로 플랜트 클래스 Executors를 사용하여 생성됩니다.
    1.FixedThreadPool: 로드가 많은 서버에 적합한 리소스 관리
    public static ExecutorService newFixedThreadPool(int nThreads)
    public static ExecutorService newFixedThreadPool(int nThreads,ThreadFactory threadFactory)

    소스 코드:
    public static 

    2. SingleThreadPool: 모든 임무를 순서대로 수행하고 임의의 시간에 여러 라인이 활동하는 장면이 없을 것이다.
    public static ExecutorService newSingleThreadPool()
    public static ExecutorService newSingleThreadPool(ThreadFactory threadFactory)

    3. CachedThreadPool: 크기가 경계가 없고 단기 비동기적인 많은 작은 프로그램이나 부하가 비교적 가벼운 서버에 적용된다.
    public static ExecutorService newCachedThreadPool()
    public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)

    ScheduledThreadPoolExecutor
    플랜트 클래스 Executors를 사용하여 1.ScheduledThreadPoolExecutor:
    public static ExecutorService newScheduledThreadPool(int nThreads)
    public static ExecutorService newScheduledThreadPool(int nThreads,ThreadFactory threadFactory)

    2.SingleThreadScheduledExecutor:
    public static ExecutorService newSingleThreadScheduledExecutor()
    public static ExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)

    Future 인터페이스
    Runnable 인터페이스나 Callable 인터페이스submit을 ThreadPoolExecutor에 주면,FutureTask 대상, API:
    <T> Future<T> submit(Callable<T> Task)
    <T> Future<T> submit(Runnable Task,T result)
    Future<?> submit(Runnable Task)

    Runnable 및 Callable 커넥터
    Executors에서 제공하는 기능:
    public static Callable<Object> callable(Runnable task)
    public static <T>Callable<T> callable(Runnable task,T Result)

    좋은 웹페이지 즐겨찾기