美文网首页
线程池:java中有哪些线程池?有什么不同?

线程池:java中有哪些线程池?有什么不同?

作者: 抄无止境 | 来源:发表于2019-10-23 16:28 被阅读0次

1. FixedThreadPool

固定容量线程池。创建线程池的时候,容量固定。构造的时候,提供线程池最大容量。
ExecutorService - 线程池服务类型。所有的线程池类型都实现这个接口。实现这个接口,代表可以提供线程池能力。
shutdown - 优雅关闭。 不是强行关闭线程池,回收线程池中的资源。而是不再处理新的任务,将已接收的任务处理完毕后再关闭。
Executors - Executor的工具类。类似Collection和Collections的关系。

ExecutorService service = Executors.newFixedThreadPool(5);
for(int i = 0; i < 6; i++){
    service.execute(new Runnable() {
        @Override
        public void run() {
        try {
            TimeUnit.MILLISECONDS.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + " - test executor");
      }
    });
}

2. CachedThreadPool

无容量限制的线程池(最大容量默认为Integer.MAX_VALUE)
有过期时间:当无线程活跃时,60秒后线程池销毁;

3. ScheduledThreadPool

计划任务线程池。
可以定时执行任务;
可以定时循环执行任务;
不会过期;

4. SingleThreadExecutor

容量为1的线程池。 顺序执行。

5. ForkJoinPool

分支合并线程池。
用递归实现分支;

线程池底层处理机制

public class Test_01_MyExecutor implements Executor {
    public static void main(String[] args) {
        new Test_01_MyExecutor().execute(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName() + " - test executor");
            }
        });
    }
    @Override
    public void execute(Runnable command) {
        new Thread(command).start();
    }
}

相关文章

网友评论

      本文标题:线程池:java中有哪些线程池?有什么不同?

      本文链接:https://www.haomeiwen.com/subject/dvpkvctx.html