• 线程池


    因为删除和新建线程都是费时的工作,所以可以使用线程池ExecutorService重用线程。把
    要执行的任务放到线程池,让它自己调度这些任务。这些任务是轻量级线程。
    有两种线程池,它们使用不同的方式创建。两种方式创建线程池。

    int threads = 4;
    ExecutorService es = Executors.newFixedThreadPool(threads);

    有大量任务要执行的线程池用newCachedThreadPool创建。

    ExecutorService service = Executors.newCachedThreadPool();

    创建一个可根据需要创建新线程的线程池,但是如果以前构造的线程可用时,就重用它们。
    将长期不用的线程从线程池删除,也就是删除60秒内没有用过的线程。就好像超市收银柜台数
    量是动态的,顾客多就多开几个,顾客少就少开几个收银柜台。
    newFixedThreadPool用于少数几个长期运行的任务的线程池。

    ExecutorService service = Executors.newFixedThreadPool(2);

    newFixedThreadPool会重用已有的线程,但是不会创建新的线程。如果其中一个线程因为
    错误而结束了,将会创建一个新的接替它执行后续的任务。就好像在球场上的篮球运动员数量
    是固定的,如果有人受伤下场,就会有候补队员接替。

    可以使用线程池执行一组任务,最简单的任务不返回值给主调线程。要返回值的任务可以
    实现Callable<T>接口,线程池执行任务并通过Future<T>的实例获取返回值。

    Callable是类似于Runnable的接口,在其中定义可以在线程池中执行的任务。Future表示
    异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。
    Future的cancel方法表示取消任务的执行,cancel方法有一个布尔参数,当参数为true时,表
    示立即中断任务的执行;当参数为false时,表示允许正在运行的任务运行完成。Future的get
    方法表示等待计算完成,获取计算结果。

  • 相关阅读:
    Jsoup系列学习(1)-发送get或post请求
    使用httpclient发送get或post请求
    charles 抓取eclipse中的请求
    springmvc学习资料整理
    springmvc和struts2的区别
    Linux常用命令
    Sql Server 2008R2 数据库发布与订阅
    jquery 父、子页面之间页面元素的获取,方法的调用
    封装ajax
    Maven 的安装配置
  • 原文地址:https://www.cnblogs.com/Michael2397/p/7824863.html
Copyright © 2020-2023  润新知