Java【线程池】-创新互联

文章目录
  • 1. 什么是线程池
  • 2. 创建线程池
    • 2.1 ExecutorService
      • 2.1.1ThreadPoolExecutor创建线程池
      • 2.1.2 使用Callable提交任务
    • 2.2 Executors创建线程池

创新互联公司长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为泗洪企业提供专业的成都做网站、网站设计,泗洪网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。1. 什么是线程池

线程池就是一个可以复用线程的技术。在没有线程池时,用户每发起一个请求,后台就创建一个新线程来处理,下次新任务来后又继续创建新线程。而创建新线程的开销是很大的,会严重影响系统性能。

2. 创建线程池
  • JDK5.0起提供了代表线程池的接口:ExecutorService。
  • 方式一:使用ExecutorService的实现类ThreadPoolExecutor自创建一个线程池对象。
  • 方式二:使用Executors(线程池的工具类)调用方法返回不同特点的线程池对象。
2.1 ExecutorService 2.1.1ThreadPoolExecutor创建线程池

在这里插入图片描述
什么时候创建新线程: 新任务提交时核心线程都在忙,任务队列也满了,并且还可以创建临时线程,此时才会创建临时线程。
什么时候开始拒绝任务: 核心线程和临时线程都在忙,任务队列也满了,新任务进来的时候才会开始任务拒绝。

public class ThreadPoolDemo {public static void main(String[] args) {//1、创建线程池对象
        ExecutorService pool = new ThreadPoolExecutor(3, 5, 6,
                TimeUnit.SECONDS, new ArrayBlockingQueue<>(5), Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());
        //AbortPolicy():丢弃任务并抛出RejectedException异常,是默认策略。
        //DiscardPolicy():丢弃任务但是不抛出i长,不推荐的做法。
        //DiscardOldestPolicy():抛弃队列中等待最久的任务,然后把当前任务加入队列中。
        //CallerRunsPolicy():由主线程负责调用任务的run()方法从而跳过线程池直接执行。

        //2、创建任务
        Runnable target = new MyRunnable();
        //3、给线程池增加任务
        pool.execute(target);
        pool.execute(target);
        pool.execute(target);
        //占满五个队列
        pool.execute(target);
        pool.execute(target);
        pool.execute(target);
        pool.execute(target);
        pool.execute(target);
        //开始创建临时线程
        pool.execute(target);
        pool.execute(target);
        //超过等待(大线程数+大等待队列数),开始拒绝
        //pool.execute(target);
        //关闭线程池(开发中一般不使用)
        pool.shutdown();//等待全部任务执行完毕之后再关闭
        pool.shutdownNow();//立即关闭,即使任务没有完成,丢失任务!
    }
}
2.1.2 使用Callable提交任务
//使用线程池对象的submit()方法提交Callable任务,并用FutureTask的父类接收对象
	Futuref1 = pool.submit(new MyCallable(100));
	//输出任务执行后的返回结果
	System.out.println(f1.get());
2.2 Executors创建线程池

大型并发系统环境中使用Executors如果不注意可能会出现系统风险。
在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

分享题目:Java【线程池】-创新互联
转载来源:https://www.cdcxhl.com/article20/dcdgjo.html

成都网站建设公司_创新互联,为您提供微信小程序响应式网站动态网站电子商务搜索引擎优化网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站