java 提供自带的线程池, 而不需要自己去开发一个自定义线程池了.
线程池类 ThreadPoolExecutor 在包 java.util.concurrent 下
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 方法用于添加新的任务
- package multiplethread;
- import java.util.concurrent.LinkedBlockingQueue;
- import java.util.concurrent.ThreadPoolExecutor;
- import java.util.concurrent.TimeUnit;
- public class TestThread {
- public static void main(String[] args) throws InterruptedException {
- ThreadPoolExecutor threadPool= new ThreadPoolExecutor(10, 15, 60, TimeUnit.SECONDS, newLinkedBlockingQueue());
- threadPool.execute(new Runnable(){
- @Override
- public void run() {
- // TODO Auto-generated method stub
- System.out.println("任务 1");
- }
- });
- }
- }
来源: http://www.bubuko.com/infodetail-2901133.html