葵恩的学习笔记

导航

线程池

一、原因

每一个线程的启动和结束都比较消耗时间和占用资源,如果系统中有很多线程,大量的启动和结束动作会导致系统性能下降,相应变慢。

为了解决上述问题,引入线程池的思想。

二、原理

 

 1、准备任务容器

2、初始化创建数个线程,让他们保持等待

3、当有外部线程往容器中扔来一个“任务”,就会有一个线程被唤醒

4、该线程提取任务并执行任务,执行完毕后线程不结束而是保持等待

三、JAVA自带线程池

ThreadPoolExecutor threadPool= new ThreadPoolExecutor(10, 15, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());

第一个参数10 表示这个线程池初始化了10个线程在里面工作
第二个参数15 表示如果10个线程不够用了,就会自动增加到最多15个线程
第三个参数60 结合第四个参数TimeUnit.SECONDS,表示经过60秒,多出来的线程还没有接到活儿,就会回收,最后保持池子里就10个
第四个参数TimeUnit.SECONDS 如上
第五个参数 new LinkedBlockingQueue() 用来放任务的集合

execute方法用于添加新的任务

posted on 2021-02-07 11:39  葵恩  阅读(46)  评论(0)    收藏  举报