小弟我前段时间看了一下jdk的并发包。感受各类懵逼。每个能理解明白的。但仍是稍有体会一些的。java
这里记录一下ExecutorService 并发工具的使用吧。并发
简单的说呢,这个类,是能够对任务线程进行调度的。很是实用。能够经过Executors的的静态方法进行建立。这里以ExecutorService es = Executors.newFixedThreadPool(5);为例ide
意思是:建立一个指定容量的线程池,容量为5,而且使这5个线程始终处于活跃状态,当任务数量超过5个时,只能执行5个任务,剩下的任务,须要等池子中的线程将任务执行完毕后再执行,若是有线程由于执行任务失败而终止运行,则会有新的闲置线程取代他执行任务(会不会致使全部线程都执行失败而终止呢?)工具
public class ThreadPoolDemo { public static class MyTask implements Runnable{ @Override public void run() { System.out.println(System.currentTimeMillis() + ":thread ID " + Thread.currentThread().getId()); try{ Thread.sleep(1000); }catch(Exception e){ e.printStackTrace(); } } } public static void main(String[] args) { MyTask task = new MyTask(); //线程池中的任务和数据属性时惟一的。有5个容量,一次就能执行5个。10个任务要分两次执行, //在ExecutorService没有shutDown时,线程池一直监控是否有任务,若是还有,则继续执行,什么时间执行不必定。 ExecutorService es = Executors.newFixedThreadPool(5); for(int i = 0; i < 11; i++){ es.submit(task); } }