线程池

2018-11-04  本文已影响0人  磊_5d71

new Thread() 弊端

线程池的好处

线程池-ThreadPoolExecutor

图片.png
图片.png

线程池运行流程

图片.png

常用方法

图片.png
图片.png

线程池类图

图片.png

Executor框架接口

图片.png
package com.alan.concurrency.example.threadPool;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;



@Slf4j
public class ThreadPoolExample1 {


    public static void main(String[] args) {

        ExecutorService executorService = Executors.newCachedThreadPool();

        for (int i = 0; i < 10; i++) {
            final int index = i;
            executorService.execute(new Runnable() {
                @Override
                public  void run() {
                    log.info("task:{}",index);
                }
            });
        }

        executorService.shutdown();
    }
}
package com.alan.concurrency.example.threadPool;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


@Slf4j
public class ThreadPoolExample2 {


    public static void main(String[] args) {

        ExecutorService executorService = Executors.newFixedThreadPool(3);

        for (int i = 0; i < 10; i++) {
            final int index = i;
            executorService.execute(new Runnable() {
                @Override
                public  void run() {
                    log.info("task:{}",index);
                }
            });
        }

        executorService.shutdown();
    }
}
package com.alan.concurrency.example.threadPool;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


@Slf4j
public class ThreadPoolExample3 {


    public static void main(String[] args) {

        //用一个线程就是按顺序执行下来的
        ExecutorService executorService = Executors.newSingleThreadExecutor();

        for (int i = 0; i < 10; i++) {
            final int index = i;
            executorService.execute(new Runnable() {
                @Override
                public  void run() {
                    log.info("task:{}",index);
                }
            });
        }

        executorService.shutdown();
    }
}

线程池配置

图片.png

J.U.C整体导图

图片.png
上一篇下一篇

猜你喜欢

热点阅读