zoukankan      html  css  js  c++  java
  • Executor简析

    本文只做简要解析,实际情形下我们多用spring的taskExecutor

    直接使用new Thread()创建线程的缺点:

    1、new Thread()耗费性能 

    2、调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。 

    3、不利于扩展,比如如定时执行、定期执行、线程中断

    使用线程池的优点:

    1、可重用存在的线程,减少对象创建、消亡的开销,性能佳 

    2、可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞 

    3、提供定时执行、定期执行、单线程、并发数控制等功能

    ----------------------------------------------------------------------------------------------

    Exector继承树

    解析:

    Executor接口(执行器)

    位于java.util.cocurrent 包下,内部包含线程池的实现,Java 5后引入,用于启动、调度、管理线程(利用内部的线程池)。

    备注:通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助于避免this逃逸问题

    注意:Executor!= 线程池,Executor>线程池

    ExecutorService接口

    继承自Executor 接口 

    Executors类

    通过工厂方法来创建不同的线程池,如:newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor、newScheduledThreadPool。

    1.public static ExecutorService newFixedThreadPool(int nThreads) 

    创建固定数目线程的线程池,当线程池满,多出的任务得在队列等待。

    2.public static ExecutorService newCachedThreadPool() 

    线程数目不固定,使用完后不立即关闭,而是在缓存中存放60s。当我们调用execute时如果缓存中有线程,将重用,否则新建一个。

    3.public static ExecutorService newSingleThreadExecutor() 

    创建一个单线程化的Executor。

    4.public static ScheduledExecutorService newScheduledThreadPoolExecutor(int corePoolSize) 

    创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代Timer类。

  • 相关阅读:
    WordPress Ambience主题‘src’参数跨站脚本漏洞
    Linux Kernel fallocate实现拒绝服务漏洞
    WordPress Content Slide插件跨站请求伪造漏洞
    WordPress Mail Subscribe List插件‘sml_name’参数HTML注入漏洞
    WordPress NextGEN Gallery插件‘swfupload.swf’多个跨站脚本漏洞
    由Firefox的NoScript插件升级想到的
    在长春继续吃
    NB到SB
    边走边记
    为什么不坐热气球?
  • 原文地址:https://www.cnblogs.com/yanze/p/10688148.html
Copyright © 2011-2022 走看看