通过java.util.concurrent.ExecutorService接口对象来执行任务,该接口对象通过工具类java.util.concurrent.Executors的静态方法来创建。
public class ExecutorServiceThread {
/*
* 线程池的大小为5
*/
ExecutorService es = Executors.newFixedThreadPool(5);
public void action(){
Executor executor = new Executor();
es.submit(executor);//通过线程池来执行
}
class Executor implements Callable<Object>{
@Override
public Object call() throws Exception {
System.out.println("当前线程名称:"+Thread.currentThread().getName());
Thread.sleep(10000);
return null;
}
}
public static void main(String[] args) {
ExecutorServiceThread t = new ExecutorServiceThread();
for (int i = 0; i < 10; i++) {
t.action();
}
}
}
执行结果:
当前线程名称:pool-1-thread-2
当前线程名称:pool-1-thread-1
当前线程名称:pool-1-thread-3
当前线程名称:pool-1-thread-5
当前线程名称:pool-1-thread-4
当前线程名称:pool-1-thread-4
当前线程名称:pool-1-thread-5
当前线程名称:pool-1-thread-1
当前线程名称:pool-1-thread-3
当前线程名称:pool-1-thread-2
从结果可以看出ExecutorService多线程起到了线程池的效果,当线程池中所有的线程被用完的时候,其他请求线程则会等待线程池中的线程被释放。