zoukankan      html  css  js  c++  java
  • JUC 一 线程池

    线程

    线程,是程序执行的最小单元。线程是进程中的其中一个实体,是被系统独立调度和分派的基本单位

    1. 它可与同属一个进程的其它线程共享进程所拥有的全部资源。
    2. 一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
    3. 多线程:一个应用程序有一个以上的线程。

    并发与并行

    并发:
        一个应用程序的多个线程可以是并发的。
    
        并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序(或线程)之间多路复用,
        并发性是对有限物理资源强制行使多用户共享以提高效率。
    
        所有的并发处理都有排队等候,唤醒,执行等这样的步骤
    
    
    并行:
        并行是多个应用程序在同一时间运行,例如在多核处理器上。并不存在像并发那样竞争,等待的概念。
    

    线程池

    线程池是指在初始化一个多线程应用程序过程中创建一个线程集合:
    
        在需要执行新的任务时重用这些线程而不是新建一个线程(提高线程复用,减少性能开销)
    
        线程使用完回到池子中,然后等待下一次分配任务。
    
    线程池作用:限制系统中执行线程的数量
    
        根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。
    
        用线程池控制线程数量,其他线程排队等候。
    

    Java线程池框架

    线程池分为三种:

    1. 基础线程池ThreadPoolExecutor
    2. 延时任务线程池 ScheduledThreadPoolExecutor
    3. 分治线程池ForkJoinPool。
    Executor:
        线程池的最上层接口,提供了任务提交的基础方法。
    
    ExecutorService:
        提供了线程池管理的上层接口,如池销毁、任务提交、异步任务提交。
    
    ScheduledExecutorService:
        提供任务定时或周期执行方法的 ExecutorService。
    
    AbstractExecutorService:
        为 ExecutorService 的任务提交方法提供了默认实现。
    
    ThreadPoolExecutor:
        线程池类,提供线程和任务的调度策略。
    
    ScheduledThreadPoolExecutor:
        属于线程池的一种,它可以允许任务延迟或周期执行,类似java的Timer。
    
    ForkJoinPool:
        JDK1.7加入的成员,也是线程池的一种。
        只允许执行 ForkJoinTask 任务,它是为那些能够被递归地拆解成子任务的工作类型量身设计的。
        其目的在于能够使用所有可用的运算资源来提升应用性能。
    
    Executors:
        创建各种线程池的工具类。
    

  • 相关阅读:
    Luogu P3731 [HAOI2017]新型城市化
    Luogu P3227 [HNOI2013]切糕 最小割
    Luogu P1654 OSU!
    CF235B Let's Play Osu! 期望dp
    Luogu P2057 [SHOI2007]善意的投票
    任意模数NTT学习笔记
    Burnside引理的感性证明
    JLOI2015 城池攻占
    BZOJ2957 楼房重建
    NOI2009 区间
  • 原文地址:https://www.cnblogs.com/loveer/p/11414155.html
Copyright © 2011-2022 走看看