for(int i=0;i<15;i++){
MyTask myTask = new MyTask(i);
executor.execute(myTask);
System.out.println("线程池中线程数目:
"+executor.getPoolSize()+"队列等待执行的任务数目:"+
executor.getQueue().size()+"已经执行完别的任务数目:
"+executor.getCompletedTaskCount());
}
executor.shutdown();
}
}
接下来在说明一下ThreadPoolExecutor的参数设置 ThreadPoolExecutor(int corePoolSize,//线程池维护线程的最少数量
策略
) ThreadPoolExecutor.AbortPolicy() 抛出java.util.concurrent.RejectedExecutionException异常 ThreadPoolExecutor.CallerRunsPolicy() 重试添加当前的任务,他会自动重复调用execute()方法 ThreadPoolExecutor.DiscardOldestPolicy() 抛弃旧的任务 ThreadPoolExecutor.DiscardPolicy() 抛弃当前的任务 handler有四个选择: int maximumPoolSize,//线程池维护线程的最大数量 long keepAliveTime,//线程池维护线程所允许的空闲时间 TimeUnit unit, 线程池维护线程所允许的空闲时间单位 BlockingQueue workQueue,线程池所使用的缓存队列 RejectedExecutionHandler handler线程池对拒绝任务的处理
上面是一个例子接下来再来一个例子