zoukankan      html  css  js  c++  java
  • Java线程池理解

    Java语言虽然内置了多线程支持,启动一个新线程非常方便,但是,创建线程需要操作系统资源(线程资源,栈空间等),频繁创建和销毁大量线程需要消耗大量时间。

    那么我们就可以把很多小任务让一组线程来执行,而不是一个任务对应一个新线程。

    这种能接收大量小任务并进行分发处理的就是线程池

    简单地说,线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待状态。

    如果有新任务,就分配一个空闲线程执行。

    如果所有线程都处于忙碌状态,新任务要么放入队列等待,要么增加一个新线程进行处理。

    Java标准库提供了ExecutorService接口表示线程池,它的典型用法如下:

    // 创建固定大小的线程池:
    ExecutorService executor = Executors.newFixedThreadPool(3);
    // 提交任务:
    executor.submit(task1);
    executor.submit(task2);
    executor.submit(task3);
    executor.submit(task4);
    executor.submit(task5);
    

    因为ExecutorService只是接口,Java标准库提供的几个常用实现类有:

    • FixedThreadPool:线程数固定的线程池;
    • CachedThreadPool:线程数根据任务动态调整的线程池;
    • SingleThreadExecutor:仅单线程执行的线程池。
  • 相关阅读:
    在阿里云服务器上安装MySQL
    mui中调用ajax时报abort错误
    IDEA根据数据库表生成pojo对象
    java.io.IOException: All specified directories have failed to load.
    mysql隔离级别
    java8新特性
    数据库语言分类
    Spring AOP 代码示例
    java NIO学习(二)
    java NIO学习(一)
  • 原文地址:https://www.cnblogs.com/gslgb/p/12966598.html
Copyright © 2011-2022 走看看